您的位置:首页 > 其它

Handler发送信息方法的区别

2015-11-24 14:29 399 查看
sendEmptyMessage(intwhat)与sendMessage(Messagemsg)的区别

系统源码查看比较

publicfinal boolean sendEmptyMessage(int what)

{

return sendEmptyMessageDelayed(what, 0);

}
就是调用了sendEmptyMessageDelayed()而已,下面看下这个方法:

publicfinal boolean sendEmptyMessageDelayed(int what, long delayMillis){

Message msg = Message.obtain();

msg.what = what;

return sendMessageDelayed(msg, delayMillis);

}

而sendMessage(Messagemsg)的实现和上面一样,请看:

publicfinal boolean sendMessage(Message msg)

{

return sendMessageDelayed(msg, 0);

}

原来在sendEmptyMessageDelayed中就是构建了一个Message,然后把这个Message的what设置成sendEmptyMessage方法中的What参数即可。

  一切恍然大悟!

  然后,在主线程中,Looper类的loop()通过 调用:msg.target.dispatchMessage(msg),调用Hanler类的dispatchMessage(Messagemsg)方法,从而在主线程中处理了这个Message.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: