Handler 发送(延时)/接收/处理消息 1.UI线程更新 2.主/子线程通信
主要的几个类
1.> ThreadLocal 存放Thread和Looper 对应关系
2.> Looper(MessageQueue / Thread): 每个线程都有一个looper 主线程 onCreate时 默认创建一个mainLooper
子线程中 1.需要调用 Looper.prepared() 2. 创建 handler 3.发送消息 4. Looper.loop()
3.> MessageQueue(链表:Message) 消息队列 发送消息时会加入该队列 并且加入时 会根据延时时间排序
nativePollOnce 延时处理() 没有任务时 待命
4.> Message :消息 从MessageQueue取出Message 执行dispatchMessage(messgae)->(handeMessage(message))
流程:创建Hander(Thread) --> sendMessage()-> 由thead获取对应的Looper.loop()(内有死循环 作为一个通道不会阻塞线程) -> MessageQueue(myLooper.queue) -> Message(queue.next()) -> Handler(Message.target) -> handeMessage