1,Handler:消息传递
主要将消息发送值MessageQueue里面,这里会调用MessageQueue的enqueueMessage将消息保存到MessageQueue中,然后Looper读取数据执行过程中会调用Handler的dispatchMessage回调之handler
2,MessageQueue消息队列。单链表储存消息
enqueueMessage单链表储存,next循环读取消息读取后并且删除消息,在没有消息的时候无限循环,阻塞
3,Looper:循环从MessageQueue中取消息
调用loop方法后开始循环,在loop方法中循环读取MessageQueue的消息,当next为空的时候阻塞循环,当MessageQueue返回为空的时候跳出循环,及调用Looper的quit方法后MessageQueue的next方法会返回为空,跳出循环
4,ThreadLocal:在不同线程中互不干扰的储存并提供数据
5,ActivityThread:初始化Looper
初始化Looper并且在这里执行loop方法。
6,ViewRootImpl的checkThread方法检查更新ui线程是否是UI线程
7,Handler调用send方法会调用MessageQueue的enqueueMessage方法
MessageQueue包括:插入和读取,读取伴随着删除操作,对应方法enqueueMessage和next,