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 的错误。

➡️

继续阅读