Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将数据从后台服务发送到后台当前的活动_C#_Android - Fatal编程技术网

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

C# 将数据从后台服务发送到后台当前的活动,c#,android,C#,Android,考虑当用户打开应用程序并直接执行活动A时的场景OnCreate方法创建在后台运行的服务 this.StartService(new Intent(this, typeof(MyService))); 该服务独立于活动运行,因此,如果用户关闭或销毁应用程序,该服务仍在运行 在活动A中,我通过RegisterReceiver注册了两个接收器,因此当我的后台服务出现问题时,我会通过发送广播更新活动A 我面临的问题是当用户从活动A转到活动B时。此时服务正在发送广播,需要在活动A上更改某些内容,但由于它

考虑当用户打开应用程序并直接执行活动A时的场景
OnCreate
方法创建在后台运行的服务

this.StartService(new Intent(this, typeof(MyService)));
该服务独立于活动运行,因此,如果用户关闭或销毁应用程序,该服务仍在运行

活动A中,我通过
RegisterReceiver
注册了两个接收器,因此当我的后台服务出现问题时,我会通过发送广播更新活动A

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

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

据我所知,若我使用绑定服务,它将在应用程序被终止时被销毁。我不想那样。所有教程仅显示如何更新前台的活动

我刚刚开始了解android,所以可能我遗漏了一些明显的小细节

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

  • 您可以使用
    上下文#sendStickyBroadcast
    。它已被弃用,但仍在工作。当你的活动进入前台时,它会得到这样的广播。获取后,不要忘记
    上下文#removeStickyBroadcast

    只有在活动位于前台时,才能向活动发送广播,以解决您的问题problem@Sandeepdhiman但我如何要求这些更新?服务正在不定期地发送广播中的最新数据-下一次更新可能在5分钟后,所以我不想让用户在下一次更新之前中继数据。您检查过这个了吗