Loop.prepare
1.创建Loop对象
2.创建MessageQueue对象
3.loop绑定当前线程,通过Loop.myloop()获取
4.一个线程只有一个loop
Loop.loop
1.循环消息
2.调用handler分发消息msg.target.dispatchMessage(msg);
Handler
public Handler(Callback callback, boolean async)
此构造方法从当前线程获取loop对象,loop又关联了mqueue,当handler发送postxxx,或者sendmessagexxx时,最终都是调用sendMessageAtTime,里面实现方法enqueueMessage() 中msg.target被赋值当前的Handler对象。最后把消息放进消息队列,而Loop.loop一直循环读取消息,最后msg.target.dispatchMessage(msg);被执行。
dispatchMessage有三种处理方式,具体哪种方式看handler创建方式和调用方法。