java - 如何实现通信Activity-Service

标签 java android

我有以下情况:

我有一项服务会定期检查互联网上的新数据,

  • 当有新数据可用时,它们会被下载并保存在 sqlite 上。
  • 当保存到数据库完成时,服务会广播一个 Intent ,以便 Activity 知道从数据库中提取新数据。

用户可能想要请求立即更新...

...在这种情况下,我使用 Messenger 请求服务查找新数据

问题是:

用户会收到请求正在进行的通知,但可能需要一段时间,可能不成功,永远无法返回...

目前我收到一条消息(使用 Messenger)从服务返回到 Activity ,通知请求的结果,或者,如果我没有收到消息,我会在 x 秒后通知用户请求不成功。

  1. 请问您能推荐一种不同的方法吗?
  2. 我不喜欢等待 对于一条消息,如果在 x 秒后没有收到消息,请通知 用户,有没有更好的方法?

最佳答案

您已经掌握了基础知识,所以没有什么可推荐的了。我将向您展示几个备选方案:

  • 您可以使用 ContentObserver并在数据库中有新数据后更新用户界面(无需等待来自服务的消息)。
  • 如果您在服务 <-> UI 组件之间有很多通信,那么查看 Otto 可能会更容易, EventBus或者只是围绕 Observables / RxJava 重组您的代码.
  • 您可以将超时逻辑移到服务中(这种方式会更容易,因为所有错误处理都在一个地方进行)并且只需将错误消息返回到 UI。大多数网络框架允许您设置连接超时参数,并且在达到该时间后请求将失败。如果您还没有看过网络框架 - Retrofit + OkHttp是一个很好的起点。

关于java - 如何实现通信Activity-Service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34050900/

相关文章:

java - 尝试从 jar 文件加载图标

java - 我想在不将图片保存到图库的情况下打开 android 相机

android - 如何使用 Kotlin Coroutines 正确地拥有待处理操作队列?

android - 将数据库从云端下载到 Android

android - 填充剩余空间 : LinearLayout and weight or RelativeLayout?

android - 为什么 Gradle 需要这么长时间来构建?

java - 缩小引用转换

java - 在没有 Maven 支持的依赖项的情况下将 Java 项目部署到 Heroku

java - 在 Android Studio 中构建变体

android - SMPP 中串联 SMS 的最大长度是多少?