外观
同步屏障与 IdleHandler 分别解决什么问题?
标准回答
同步屏障让队列中的同步消息暂时不能越过该位置,异步消息仍可被调度,框架借此协调部分高优先级工作。IdleHandler 则在消息队列暂时没有到期工作时执行空闲任务,回调仍在该 Looper 所在线程。
机制解释
这里的“异步消息”指队列调度属性,不代表另开线程。IdleHandler 在主线程执行时仍必须很短;繁忙状态下执行时机不确定,不能放首屏强依赖,也不能把 100ms 工作搬进去就宣称消除了主线程开销。
延伸追问
IdleHandler 返回 true 和 false 呢?true 表示保留,以便后续空闲时再次回调;false 表示执行后移除。要警惕持有 Activity、长期重复任务和遗漏清理。
内容来源
- Android 智能硬件 SDK 技术 Wiki · 原条目
Q19