Android Service 与 Activity / Fragment 的几种通信方式
💡
原文中文,约2000字,阅读约需5分钟。
📝
内容提要
为了实现蓝牙对讲功能在切换到 Android 系统桌面时依然可以使用,将主要的语音通信逻辑放到了前台服务中,使用 LiveData 代替 LocalBroadcastManager,Service 中使用 postValue 来通知 Activity / Fragment。
🎯
关键要点
-
为了实现蓝牙对讲功能在切换到 Android 系统桌面时依然可以使用,将主要的语音通信逻辑放到了前台服务中。
-
需要在打开对应的 Activity / Fragment 时同步 Service 中的状态及语音波形显示。
-
选择使用 LiveData 代替已废弃的 LocalBroadcastManager。
-
LocalBroadcastManager 只能在单个应用内部使用,效率较高,但已被官方推荐替换。
-
LiveData 是可观察的数据持有者类,能感知组件的生命周期,确保仅更新处于活动状态的观察者。
-
Service 的生命周期比 Activity 和 Fragment 长,适合用 LiveData 向它们发送数据。
-
在 Service 中使用 postValue 通知 Fragment 数据变化,避免了在后台线程中使用 setValue 的错误。
➡️