外观
如何理解IdleHandler 是把任务延迟进入消息队列吗?
标准回答
不是。IdleHandler 注册的是队列空闲时的回调,当没有立即可执行消息、或者下一条普通消息还未到执行时间等适用条件出现时,MessageQueue 会调用 queueIdle。它运行在 Looper 所属线程,返回 true 表示保留,返回 false 表示移除。它适合短小、可延后的工作,但不保证在某个固定时刻执行,也不适合持续重 I/O 或长计算。我会把真正耗时的初始化交给后台线程,IdleHandler 只做轻量触发。
延伸追问
主线程忙时,IdleHandler 可能很晚才执行;它也不是自动产生后台并发的工具。
内容来源
- Android Framework 知识手册 · 原条目
5-6