8 .1handler原理图.png
1 主线程概念只要你不在代码中开启子线程 都为主线程
2 主线程已有 Looper类就有了:
(看源码可以发现内部有消息队列final MessageQueue mQueue;
继续看:不停地监视取出消息
for (;;) {
Message msg = queue.next();//取出消息
msg.target.dispatchMessage(msg);//Message有个target属性去Message中查看发现target为一个handler
dispatchMessage(msg)此方法为handler的进去查看
/**
* Handle system messages here.
*/
public void dispatchMessage(Message msg) {
if (msg.callback != null) {
handleCallback(msg);
} else {
if (mCallback != null) {
if (mCallback.handleMessage(msg)) {
return;
}
}
handleMessage(msg);//此方法为主要方法 处理消息
}
}
}
)
网友评论