我有一项服务可以从互联网下载一些数据并定期将进度发送到指标 Activity 。在处理服务结束时发送结果。
我有一个问题,什么是实现通信持久性的最佳方式。
Messenger 或 ResultReceiver,我需要将它们打包到 Intent 中并将监听器列表存储在服务中。但是在配置更改 Activity 破坏时,很难维护此列表。
LocalBroadcastManager,我需要从 Messages 迁移到 Intents,而且这个类中没有粘性发送。因此,如果我在我的进度 Activity 处于后台时获得结果,结果将会丢失。
BroadcastManager 很好,但我不需要在系统范围内广播我的进度和安全问题。
有什么想法吗?
最佳答案
您可能想试试 Otto ( http://square.github.io/otto/)。
在您的服务中,无论何时您想要与 Activity 进行通信,都可以使用共享的总线
发布一个新事件。您应该在主线程上使用处理程序或主循环程序执行此操作,因为您可能正在使用 IntentService
。该服务也可以充当生产者。重新创建您的 Activity 时,将发布当前已知值。
您的 Activity 只需要向 Bus
注册并订阅正确的事件。暂停时,只需注销 Bus
即可。
关于android - 服务到 Activity 粘性通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15311047/