将数据从后台服务发送到后台当前的活动

时间:2017-05-26 12:48:35

标签: c# android

考虑用户打开应用并直接活动A 的情况。 OnCreate方法创建在后台运行的服务。

this.StartService(new Intent(this, typeof(MyService)));

此服务独立于活动运行,因此如果用户关闭或销毁应用程序,则服务仍在运行。

活动A 中,我通过RegisterReceiver注册了几个接收器,因此当我的后台服务中发生某些事情时,我会通过发送广播来更新活动A

我面临的问题是当用户从活动A 转到活动B 时。此时服务正在发送广播,需要在活动A 上更改某些内容,但由于它不在前台,我不会通过接收器更新。因此,当用户从活动A 返回活动B 时,用户会看到旧数据。服务会以不规则的间隔进行更新。

更新后台活动然后转到前台的正确方法是什么?在活动中获取服务引用或数据的适当方法是什么?

据我了解,如果我使用绑定服务,它将在应用程序被杀死时被销毁。我不希望这样。所有教程仅显示如何更新前台活动。

我刚刚开始了解android,所以也许我错过了一些明显的小细节。

2 个答案:

答案 0 :(得分:0)

  1. 您可以将数据保存在数据库或文件中
  2. 您可以重新启动服务以获取更新的数据

答案 1 :(得分:0)

您可以使用Context#sendStickyBroadcast。它已被弃用,但仍然有效。当它前进时,你的活动将得到这样的广播。获得后不要忘记Context#removeStickyBroadcast