我正在构建一个类似于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中将服务声明为进程吗?
答案 0 :(得分:2)
保持服务在后台运行的最佳方法是什么,或者避免系统将其终止?
你不是。前台服务是您可以获得的最佳服务。
但我的应用程序丢失了通知状态栏中的所有数据
将数据保存到数据库,SharedPreferences
,文件或服务器。进程不是持久性数据存储。