- Handler
- Activity.runOnUiThread()
- View.post(Runnable r)
讲讲 Handler 机制吧
Handler 主要由以下部分组成。
-
Handler
Handler
是一个消息辅助类,主要负责向消息池发送各种消息事件Handler.sendMessage()
和处理相应的消息事件Handler.handleMessage()
。 -
Message
Message
即消息,它能容纳任意数据,相当于一个信息载体。 -
MessageQueue
MessageQueue
如其名,消息队列。它按时序将消息插入队列,最小的时间戳将被优先处理。 -
Looper
Looper
负责从消息队列读取消息,然后分发给对应的Handler
进行处理。它是一个死循环,不断地调用MessageQueue.next()
去读取消息,在没有消息分发的时候会变成阻塞状态,在有消息可用时继续轮询。
在 Android 开发中使用 Handler 有什么需要注意的
首先自然是在工作线程中创建自己的消息队列必须要调用 Looper.prepare()
,并且在一个线程中只能调用一次。当然,仅仅创建了 Looper
还不行,还必须使用 Looper.loop(