如何防止系统杀死我的'前台'服务?

时间:2017-04-05 11:51:19

标签: android service process kill foreground-service

我正在构建一个类似于Runtastic / Endomondo / Strava的应用程序,它需要一个获取GPS位置的服务,直到用户明确表示。

我跑了Runtastic和我的应用程序试试。 Runtastic工作得很好。但是我的应用程序丢失了所有数据,而通知还在状态栏中。我认为服务重启自己,或Android杀了我的服务。

我在带有2GB RAM的LG G3中测试了应用程序,我认为它应该运行Runtastic和我的应用程序。

所以,我的问题是¿保持服务在后台运行的最佳方法是什么,或者避免系统杀死它?我想模仿Runtastic / Endomondo / Strava的逻辑。这意味着,电池寿命并不重要。

  • 我尝试在方法START_STICKY上使用onStartCommand标记启动该服务。

  • 我尝试使用startForeground方法

  • 开始服务
  • 我尝试过查询WakeLock

根据文档(https://developer.android.com/guide/topics/processes/process-lifecycle.html),我的服务应该是“可见的流程”。

以下是我服务代码的要点:https://gist.github.com/cpalosrejano/cc1ab73c4819c3e84234f2d619421b93

¿我应该在Manifest.xml中将服务声明为进程吗?

1 个答案:

答案 0 :(得分:2)

  

保持服务在后台运行的最佳方法是什么,或者避免系统将其终止?

你不是。前台服务是您可以获得的最佳服务。

  

但我的应用程序丢失了通知状态栏中的所有数据

将数据保存到数据库,SharedPreferences,文件或服务器。进程不是持久性数据存储。