Handler是Android消息机制的上层接口。Android的消息机制主要是指Handler的运行机制,Handler的运行需要底层的MessageQueue和Looper的支撑。Handler的主要任务是将一个任务切换到某个指定的线程中去执行。
ThreadLocal是一个线程内部的数据存储类,通过它可以在指定的线程中存储数据,在多个线程中互不干扰的存储和修改数据
MessageQueue主要包括两个操作:插入和读取,分别对应方法为enqueueMessage和next,enqueueMessage的主要操作是单链表的插入操作,next方法是一个无限循环的方法
Looper会不停的从MessageQueue中查看是否有新消息,若有则立即处理,否则一直阻塞。Looper提供了quit和quitSafely来退出一个Looper。在Looper中只有调用loop方法后,消息循环系统才会真正起作用
Handler的工作主要包含消息的发送和接受过程,Handler发送消息的过程仅仅是向MessageQueue中插入一条消息,MessageQueue的next方法会返回这条消息给Looper,Looper收到消息后开始处理,最终消息会由Looper交给Handler处理,Handler的dispatchmessage方法会被调用