Skip to content
阅读进度

Handler 的工作机制是什么? ​

返回 Java 与并发 目录

标准回答 ​

Handler 将 Message 或 Runnable 放进关联线程的 MessageQueue;该线程的 Looper 循环取出到期任务,再交给对应 Handler 分发执行。任务在哪个线程执行,取决于 Handler 绑定哪个 Looper,不取决于是谁调用 sendMessage 或 post。(Handler API)

机制解释 ​

Message 是任务载体,MessageQueue 管理任务及执行时机,Looper 驱动处理,Handler 负责投递和分发。主线程的 Looper 由框架准备;普通线程需要自己的消息循环才适合绑定 Handler。

延伸追问 ​

主线程 Handler.post 一个耗时任务是不是异步了?它只是排队后执行,仍占用主线程。postDelayed 的延时是最早可执行条件之一,不保证在指定毫秒精确开始;前面的任务可能造成延误。

内容来源 ​

用完整回答理解机制,用真实证据解释项目。