android编程:Handler的handleMessage在发送消息后没有立即被调用

界面一个ProgressBar,主线程用来更新进度,创建一个线程执行“任务”,把进度的值sendMessage出去,由handleMessage来更新进度条。发现把所有消... 界面一个ProgressBar,主线程用来更新进度,创建一个线程执行“任务”,把进度的值sendMessage出去,由handleMessage来更新进度条。发现把所有消息发完后,那些消息才开始被处理?求解,谢谢
public class MainActivity extends Activity {

Handler handler = null;
HandlerThread thread = null;
static ProgressBar bar = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Log.d("MainActivity",""+Thread.currentThread().getId());

bar = (ProgressBar)this.findViewById(R.id.progressBar1);

bar.setMax(100);
bar.setProgress(20);

thread = new HandlerThread("anotherThread");
thread.start();

handler = new MyHandler(thread.getLooper());
handler.post(new Runnable(){
public void run(){
Log.d("Thead",""+Thread.currentThread().getId());

for( int i=1; i<=100; i++)
{
handler.sendEmptyMessage(i);
Log.d("SendMessage", ""+i);
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
}

static class MyHandler extends Handler{
public MyHandler(Looper looper) {
super(looper);
}

@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Log.d("HandleMessage",msg.toString() );
bar.setProgress(msg.what);
bar.refreshDrawableState();
}
}
}
消息都发送完了,才开始处理
展开
 我来答
匿名用户
2013-10-29
展开全部
Post是在主线程里面执行的……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kitencx
2013-10-27 · TA获得超过439个赞
知道小有建树答主
回答量:300
采纳率:0%
帮助的人:207万
展开全部
这有异步么?都是在一个消息队列中处理的啊。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式