2017-05-26 115 views
0

考虑用户打开应用并直接进入的场景活动AOnCreate方法创建在后台运行的服务。将数据从后台服务发送到当前在后台的活动

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

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

活性的我通过RegisterReceiver注册情侣接收器,所以当东西在我的后台服务发生了,我通过发送广播更新活性的

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

什么是正确的方式来更新在后台,然后去前台的活动?在活动中获取服务参考或数据的适当方式是什么?

据我了解,如果我使用绑定服务,它将在应用程序被杀时被销毁。我不想那样。所有教程仅显示如何更新前景中的活动。

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

+0

只有在前台解决问题 –

+0

@Sandeepdhiman,你可以发送广播到你的活动,但我该如何要求这些更新?服务以不规则的时间间隔在广播中发送最新的数据 - 下一次更新可能在5分钟后,所以我不希望用户继续传输数据,直到下次更新 –

+0

你检查了这个https://stackoverflow.com/questions/2282435/通知活动 - 从-A-广播接收器,仅-IF-IT-是,在最前台 –

回答

0
  1. 可以在数据库中持久数据或文件
  2. 您可以重新启动服务来获取更新的数据
0

您可以使用Context#sendStickyBroadcast。它已被弃用,但仍在工作。您的活动在前台播放时将获得此类广播。获取后请不要忘记Context#removeStickyBroadcast

相关问题