public void dispatchMessage(Message msg) {
if (msg.callback != null) {
handleCallback(msg);
} else {
if (mCallback != null) {
if (mCallback.handleMessage(msg)) {
return;
}
}
handleMessage(msg);
}
}
- 如果调用过过
Handler.post(Runnable)
方法则msg.callback不为空先执行。 post
方法实际上发送了一条消息。 public final boolean post(Runnable r)
{
return sendMessageDelayed(getPostMessage(r), 0);
}
private static Message getPostMessage(Runnable r) {
Message m = Message.obtain();
m.callback = r;
return m;
}
- 然后执行new Handler(new Callback) 的方法,如果
return true
则不会继续将消息传递给handleMessage()
,如果 return false
则将继续传递给handleMessage()
。所以如果两个处理消息的方法都设置了就要考虑这个。 - 最后消息会传递给我们重载的
handleMessage()
方法