首页 / 资讯中心 / 文章详情

第219篇 本地广播:LocalBroadcastManager 的快与安全

第219篇 本地广播:LocalBroadcastManager 的快与安全 ★ FEATURED ARTICLE
先把结论放在前面:本地广播的价值只剩两点——进程内分发不进系统、不需要声明exported。它不提供任何跨进程能力。而这两点 nowadays 都可以用更轻的手段拿到,因此LocalBroadcastManager已整体废弃(@Deprecated),工程上应当改用协程的SharedFlow或直接用观察者模式。面试里这题的价值在于它能测出"有没有跟上工具链演进"。答得浅的是"本地广播更快更安全,用它替代全局广播";答得深的是能讲清它快在哪(不走 Binder、不经 AMS)、它省掉了什么(exported与权限配置),以及它被废弃的真正原因(能力完全被 Kotlin 协程流覆盖)。快在哪:链路对比全局广播: sender → sendBroadcast → AMS(system_server)→ Binder 事务 → 各目标进程接收器队列 → 主线程 Handler → onReceive 本地广播: sender → mMap 查表(进程内 Map)→ 主线程 Handler → onReceive差别只有一行:全局广播多了一段"进程内 IPC 往返"。 具体成本包括:Binder 事务的系统调用开销、AMS 侧的 Intent 解析与匹配、系统侧的分发队列调度。单次差异通常在毫秒级,但广播高频发送时(例如逐帧或逐次滚动事件)差距会被放大。
阅读完成 · 觉得有帮助?
咨询建站