外观
Handler 的工作机制是什么?
标准回答
Handler 将 Message 或 Runnable 放进关联线程的 MessageQueue;该线程的 Looper 循环取出到期任务,再交给对应 Handler 分发执行。任务在哪个线程执行,取决于 Handler 绑定哪个 Looper,不取决于是谁调用 sendMessage 或 post。(Handler API)
机制解释
Message 是任务载体,MessageQueue 管理任务及执行时机,Looper 驱动处理,Handler 负责投递和分发。主线程的 Looper 由框架准备;普通线程需要自己的消息循环才适合绑定 Handler。
延伸追问
主线程 Handler.post 一个耗时任务是不是异步了?它只是排队后执行,仍占用主线程。postDelayed 的延时是最早可执行条件之一,不保证在指定毫秒精确开始;前面的任务可能造成延误。
内容来源
- Android 智能硬件 SDK 技术 Wiki · 原条目
Q17