1)Looper.prepare();
1. new Looper() : Looper生成MessageQueue,指定Thread
2.ThreadLocal.set(Looper)
2)new Handler()
1.Handler中指定Looper,MessageQueue(Looper是指定线程对应的,MessageQueue是得到Looper中的)
3)发送message
流程 Handler.enqueueMessage-> MessageQueue.enqueueMessage
1.触发Handler中MessageQueue 的消息入列
4)Looper.loop()
1.得到线程对应Looper,然后Looper中MessageQueue.next :取出消息
2.触发msg.target.dispatchMessage(msg);
5)处理消息
1.msg.target:Handler, 及在Handler.enqueueMessage时赋值的msg.target = this;
2.Handler.dispatchMessage : msg 是否存在Runnable -> 是否存在Handler.Callback->handleMessage