android handler调用post方法阻塞

【android handler调用post方法阻塞】采得百花成蜜后,为谁辛苦为谁甜。这篇文章主要讲述android handler调用post方法阻塞相关的知识,希望能为你提供帮助。

1.试下用postDelayed(Runnable a, int time),因为post把消息放到Looper中就返回,但Looper中没有其他消息又会被立刻取出来执行,这样就有可能做了run中的操作,而没有及时刷新按钮.

2.另外,这种做法耗时操作仍然是由UI线程去做了。。而不是你想的另起了线程。。
建议最好用下面的方法:
定义一个线程。
class MyThread extends Thread{
HandlermHandler;
Booleanboo;
public MyThread(Handler handler){
mHandler = handler;
}
public void setBoo(boolean b) {boo = b; }
publid void run(){
if(boo){
getWeatherInfo(); //耗时操作
analyzing(); //耗时操作
mHandler.post(new Runnable() {
public void run() {
setWeather(); //更新UI
}
); //更新UI
boo = true;
}
}
}

在处理单击事件时:
sureButton.setOnClickListener(new Button.OnClickListener(){
public void onClick(View view){
setBoo(true);
myThread.start();
}
});

在activity中:
MyThread myThread = new MyThread(mHandler);


    推荐阅读