前台服务被操作系统杀死

时间:2018-03-24 16:06:31

标签: android service foreground-service

我正在创建一个每30秒捕获一次位置的应用。为此,我有一个前台服务和一个处理程序,每30秒获取一次最新位置。该应用程序适用于许多具有库存操作系统的设备。但是,在OnePlus,Panasonic,Vivo等设备上,即使在更改电池优化状态和打盹模式后,前台服务也会被操作系统(有时也是应用程序)杀死。我知道在Android中创建一个不会死的服务是不可能的。有什么方法可以达到我想要的目的吗?请告诉我。谢谢!

1 个答案:

答案 0 :(得分:2)

首先,是的,你是正确的,当资源有限时,操作系统将停止服务,所以为了解决这个问题,你可以在创建服务时说明服务的类型,如下所示: START_STICKY,START_NOT_STICKY,START_REDELIVER_INTENT ...

阅读本文的最后一部分,讨论何时使用其中的哪一个

https://android-developers.googleblog.com/2010/02/service-api-changes-starting-with.html

Service.onStartCommand()回调,允许服务更好地控制系统应如何管理它。这里的关键部分是函数返回的新结果代码,告诉系统如果它的进程在运行时被终止,它应该对服务做什么。