活动应该如何与可能长期运行的服务进行通信?

时间:2014-03-13 08:42:20

标签: android android-activity android-service

我有一个前台服务和一个与之通信的活动。该服务由活动启动和停止,但也可以自行停止。

即使用户导航离开服务,服务仍应保持运行,直到明确停止。在许多方面,这种情况类似于音乐播放器。

如果该服务实际上并未使用,那么在系统需要内存之前它仍然可以保持不变,就像暂停的活动一样。

活动应该如何与服务进行通信?我考虑过了:

  • 绑定服务,并通过活页夹获取对服务的引用。如果活动被销毁,这将停止服务。
  • 启动服务。让服务在静态字段中存储引用。让活动等待服务启动然后使用引用。这感觉很难过。
  • 启动服务,然后绑定服务,并通过绑定器获取对服务的引用。这样做有效,但每次服务被杀死都会重新启动服务,就好像它是粘性的一样。
  • 启动服务,然后向其发送意图(使用startService)。这听起来效率低下,但我还没有测量过,所以也许没关系。它不允许服务通知更新活动。
  • 启动服务,绑定服务。确保服务在其工作完成后始终显式停止。这确实意味着服务不会在系统需要内存之前徘徊#34;此外,它需要将其数据保存在除自己的字段之外的其他位置,因为用户可能会在服务停止后立即返回活动。
  • 通过将服务合并到活动中,从等式中删除服务。做其他事情以保持TCP连接打开。

1 个答案:

答案 0 :(得分:0)

对于消息传递,android提供了Handler,Messenger。 您可能需要查看以下链接,我认为它将满足您的需求。

Example: Communication between Activity and Service using Messaging