Looper.prepare()婚度,ThreadLocal.set觸發(fā)Looper構造函數饵史,創(chuàng)建MessageQueue
Handler的構造函數獲取當前線程的Looper盒延,通過Looper獲取到MessageQueue
Handler添加CallBack的handleMessage
單鏈表復用池創(chuàng)建Message校翔,Message.obtain()
Handler.sendMessage(msg)
msg.target賦值為當前的handler
消息發(fā)送到該消息隊列 mq.enqueueMessage(msg)
looper.loop()開啟消息循環(huán)進入loopOnce()
消息循環(huán)內觸發(fā) msg.target.dispatchMessage(msg);
觸發(fā)handler的handleMessage踱稍,流程結束曲饱。
一句話描述:handler.sendMessage的時候,msg.target記錄了該handler珠月。
MessageQueue循環(huán)時觸發(fā)該handler的dispatMessage進入handlerMessage扩淀。