1,Handler
handler的sendMessage会调用消息队列的enqueueMessage方法将handler本身绑定到msg消息上,然后放入消息队列中。而消息队列主要提供了enqueueMessage入队和next出队的操作,采用的是单链表结构。也就是handler在创建的时候就已经和创建handler的线程以及线程持有的looper以及消息队列绑定了。
2,Looper
Looper持有一个静态的final的成员变量ThreadLocal,并且在创建的时候会绑定一个MessageQueue。
当Looper调用prepare的时候会得到当前线程绑定的ThradLocalMap里面的looper,如果没有就为当前线程设置一个Looper。(ThradLocalMap是线程的一个成员变量,在get的时候如果为空的话就会创建一个并且赋值给线程)调用loop方法的时候就是循环从消息队列取出消息进行处理。