旨在开发一个小应用以获取最新文章并在notifications bar
我知道将service
foreground
设置为杀死电池和设备内存的坏主意
正如我们所知,有些应用程序每x分钟都会杀死所有正在运行的服务,例如advanced task killer
并且我的服务也已经被杀死,所以在用户再次午餐之前,目的不是获取最新消息
我用谷歌搜索了如何防止我的服务被杀,我找不到一个好的解决方案,其中大多数都太老了,其余的都没用了
我真的需要一个建议是否有任何方法可以防止我的服务在没有foreground
的情况下被杀死?
任何帮助都非常非常感谢
答案 0 :(得分:8)
我知道将服务前景设置为杀死电池的坏主意 和设备ram
不是真的。如果您制作前台服务,则告诉Android确定其优先级,并确保您的服务是内存不足时要杀死的最后一个服务。
如果您所做的只是启动一项无效的前台服务,则不会耗尽额外的CPU周期,从而减少电池耗电。
可以理解,由于服务正在运行,应用程序本身正在运行,这意味着某些内存已用完。
然而,这不属于杀死电池和ram 。
至于处理服务死亡。如果不提供服务前景,您将失去优先级。但请记住,如果Android需要回收内存,即使是前台服务也会被终止。
如果一个任务杀手扼杀了你的应用程序,你做不了多少,它基本上是用户强行关闭的。正如在另一个答案中提到的,您可以使用AlarmManager来安排重复的Intents。可以说,这将消耗更多的电池,因为您将唤醒设备以执行BroadcastReceiver。
但是,如果Android本身已经取消了您的服务,如果您从START_STICKY
返回onStartCommand()
,则会在内存再次可用后重新创建您的服务。
答案 1 :(得分:4)
你可以做的是使用一个AlarmManager并安排一个PendingIntent,它会定期唤醒并执行你的东西,如here所述。