【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);
推荐阅读
- 浅谈Android样式开发之selector
- Android中将布局文件转成bitmap
- 存在填充时,如何使textarea 100%无溢出()
- 通过删除0个或多个字符将一个字符串转换为其他字符串的方法
- 将n写为两个或多个正整数之和的方法
- Java使用3种方法从控制台读取输入
- 为偏斜树着色的方法,以使父级和子级具有不同的颜色
- 排列球以使相邻球为不同类型的方式
- 使用允许重复的数组元素求和到N的方法