处理流程
handler中处理message的来源有三个层级
第一层,是来自于post的runnable对象,post方法会将runnable赋值给msg.callback,在 dispatchMessage 的时候首先判断是否存在msg.callback
第二层,如果以上msg.callback不存在,那就判断handler.callback是否存在,如果存在,且callback.handleMessage方法返回true,那么dispatchMessage方法return
第三层,最后如果handler.callback不存在,或者handler.callback.handlerMessage方法处理完之后返回了false,那么会调用本身handlerMessage方法处理msg
贴代码最直观,写出来就巩固下记忆
public void dispatchMessage(Message msg) {
if (msg.callback != null) {
handleCallback(msg);
} else {
if (mCallback != null) {
if (mCallback.handleMessage(msg)) {
return;
}
}
handleMessage(msg);
}
}
复制代码