android最好的方法来防止服务被杀?

时间:2013-11-30 20:43:13

标签: android service

旨在开发一个小应用以获取最新文章并在notifications bar

中显示它们

我知道将service foreground设置为杀死电池和设备内存的坏主意

正如我们所知,有些应用程序每x分钟都会杀死所有正在运行的服务,例如advanced task killer并且我的服务也已经被杀死,所以在用户再次午餐之前,目的不是获取最新消息

我用谷歌搜索了如何防止我的服务被杀,我找不到一个好的解决方案,其中大多数都太老了,其余的都没用了

我真的需要一个建议是否有任何方法可以防止我的服务在没有foreground的情况下被杀死?

任何帮助都非常非常感谢

2 个答案:

答案 0 :(得分:8)

  

我知道将服务前景设置为杀死电池的坏主意   和设备ram

不是真的。如果您制作前台服务,则告诉Android确定其优先级,并确保您的服务是内存不足时要杀死的最后一个服务。

如果您所做的只是启动一项无效的前台服务,则不会耗尽额外的CPU周期,从而减少电池耗电。

可以理解,由于服务正在运行,应用程序本身正在运行,这意味着某些内存已用完。

然而,这不属于杀死电池和ram

至于处理服务死亡。如果不提供服务前景,您将失去优先级。但请记住,如果Android需要回收内存,即使是前台服务也会被终止。

如果一个任务杀手扼杀了你的应用程序,你做不了多少,它基本上是用户强行关闭的。正如在另一个答案中提到的,您可以使用AlarmManager来安排重复的Intents。可以说,这将消耗更多的电池,因为您将唤醒设备以执行BroadcastReceiver。

但是,如果Android本身已经取消了您的服务,如果您从START_STICKY返回onStartCommand(),则会在内存再次可用后重新创建您的服务。

答案 1 :(得分:4)

你可以做的是使用一个AlarmManager并安排一个PendingIntent,它会定期唤醒并执行你的东西,如here所述。