一、Handler的消息处理机制
-
UI线程:系统在创建UI线程时会初始化一个Looper对象,同时也会创建一个与其关联的MessageQueue;ps:在系统应用程序在不同线程上具有多个视图的情况下,UI线程可能与主线程不同。
-
Handler:发送与处理信息,前提,当前线程
-
Message:Handler接收和处理的消息对象
-
MessageQueue:消息队列,先进先出管理Message,在初始化;ps:栈,先进后出,只能从顶部取数据;队列,先进后出,可以从头部和尾部进行遍历,但是不能同时遍历
-
Looper:每个线程只能够有一个Looper,管理MessageQueue,不断地从中取出Message分发给对应的Handler处理
子线程需要更新UI时,可以新建一个Handler对象,将Message绑定当前Hander对象,自行进入messageQueue,等待Hander分发,当Hander分发开始,由Looper按照先进先出的原则取出,根据message的what属性分发给对应的hander处理