保持服务与应用程序同步

时间:2013-11-22 00:49:33

标签: android android-service

我想知道什么是在应用程序运行时保持服务运行的最佳方法(可能在后台),然后在应用程序结束时服务停止(在这种情况下应用程序已完全停止,而不是在背景)。

另一个子问题是:如何在应用程序停止时停止服务?

我意识到一种解决方案是使用BoundServices,但这是最好的方式还是足够好? 例如,如果活动绑定服务,然后系统杀死活动并带来 它再次活着然后服务将如何表现?还是有其他我不知道的问题?

实施此操作的最佳方法是什么?感谢。

1 个答案:

答案 0 :(得分:0)

结帐http://developer.android.com/guide/components/bound-services.html。 绑定服务是客户端 - 服务器接口中的服务器。绑定服务允许组件(例如活动)绑定到服务,发送请求,接收响应,甚至执行进程间通信(IPC)。 绑定服务通常仅在服务于其他应用程序组件时才存在,并且不会无限期地在后台运行。

您有两种方法可以启动该服务: 1. bindService()到activity 2. startForeground()并在运行时绑定

只要活动在视图中且runnable处于活动状态,选项1才会运行。 (示例用法是使用服务下载文件) 只要应用程序正在运行,选项2就会运行(即使活动在后台)此选项要求您的服务列在通知栏中。

你可以通过调用stopSelf(int)使服务停止(我认为如果当前绑定了一个活动,这不起作用)或者你可以从一个活动中调用stopService()。

至于系统查杀活动问题....不知道你的服务将处理什么,很难就如何处理这种情况提出建议。在大多数情况下,在前台运行的服务将是系统将尝试回收的最后一个资源。如果系统终止活动,将调用onDestory方法的服务,您应该在那里进行一些清理,以便下次启动时可以继续安全地进行。

http://developer.android.com/images/service_lifecycle.png