【问题标题】:Android Architecture Components - communication between Activity/Fragment and Service/IntentServiceAndroid架构组件——Activity/Fragment与Service/IntentService之间的通信
【发布时间】:2019-11-13 04:48:20
【问题描述】:

answer to this question 为我提供了如何在 Android 架构组件/Jetpack 环境中使用服务的精彩指南。

它建议 IntentServices 应该通过 Repositories 插入 ViewModels,就好像它们是任何其他数据源一样,例如 Web 服务。

但该答案和Jetpack guide upon which it's based 都没有关于启动并绑定到服务、观察其 LiveData 并将其级联回存储库的所谓“远程数据源”对象的太多信息。

这是什么?注入到存储库中的普通 Java 对象?单身狗?一些特殊的生命周期感知子类?

它从哪里获得启动服务所需的上下文?

您可以指出我的示例代码吗?如果没有,您能否为像我这样的新手勾勒出它的基本原理,包括它的生命周期如何与服务本身的生命周期联系起来?

提前致谢!

【问题讨论】:

  • 你找到合适的答案了吗?我也想知道。

标签: android android-service-binding android-jetpack


【解决方案1】:

您可以使用可感知生命周期的 AndroidX 组件(与 ViewModel 一起使用)来代替 IntentService。这个组件叫做WorkManagerhttps://codelabs.developers.google.com/codelabs/android-workmanager/#0

在您的其他 S.O. 中提出了另一种选择(更具挑战性)。 post: 使用 RxJava Observable/Flowable/Processor 将数据从 IntentService 推送到 ViewModel。

【讨论】:

    【解决方案2】:

    为您的所有活动创建一个基本活动,并让它绑定/取消绑定到服务。有一个带有存储库的中间层和一个处理服务和活动之间通信的中介。您的 ViewModel 可以注册到观察者并观察。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-02
      • 1970-01-01
      相关资源
      最近更新 更多