如何防止android服务被杀(带通知的服务)

时间:2014-07-08 06:09:52

标签: android

我正在开发一个需要不断显示通知的应用程序 我的服务是每隔一秒显示一次通知 当资源不足时,android会杀死我的服务 我从onStartCommand()获得了返回START_STICKY 所以一段时间后服务重新启动 但同时通知看起来停止了。

我在某个地方红了,显示通知的服务可能无法被android停止。我得到了任何一个例子。

4 个答案:

答案 0 :(得分:6)

使用

startForeground(int,Notification);

在onCreate of service。它需要一个通知编号和一个通知对象,它将显示在通知栏中。

要删除通知,请使用

startForeground(0,Notification);

答案 1 :(得分:4)

如上所述,您需要使用startForeground(int,Notification)方法向用户了解您的服务。它也获得了更多的特权。

您可以阅读更多相关内容here(内部示例)。

答案 2 :(得分:2)

没有办法完全阻止它被杀死。使其成为前台服务有助于。返回start_sticky意味着如果它被停止将重新启动(因此它应该在其onCreate中对其自身执行startService以确保它重新启动而不仅仅是重新创建)。但由于资源的原因,Android有权随时终止任何服务。

答案 3 :(得分:1)

更新

您可以在方案中使用Foreground Service。来自文档:

  

前台服务是一种服务,被认为是用户积极意识到的东西,因此在内存不足时不会成为系统杀死的候选者。前台服务必须为状态栏提供通知,该通知位于"正在进行的"标题,这意味着除非服务被停止或从前台删除,否则不能解除通知。


据我所知,没有防止你的服务被android系统阻止的防弹方法。如果设备对内存/资源至关重要,则必须停止GC的服务。建议不要这样做,因为您的服务会耗尽设备电池。