android - 服务到 Activity 粘性通信

标签 android ipc android-service

我有一项服务可以从互联网下载一些数据并定期将进度发送到指标 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/

相关文章:

Android - 确保当服务进程被操作系统杀死时释放唤醒锁

java - 无法启动 Api 中的后台服务 > 26

perl - 单台机器最快的 Perl IPC/消息队列是什么?

android - Android任务 killer 列表

java - OpenGl ES on android微调光线拾取代码

java - 使用GsonBuilder和InputStream Android仅解析整个消息java的一个分支的JSON

linux - nc 访问的 ZeroMQ IPC Unix 域套接字

Linux 消息队列 - 多个接收者

android - 在 Android 中的随机路径上为 imageview 设置动画

android - 如何在 linux 内核模式下将 '\n' 传递到文件中