我正在构建一个类似于 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 中将服务声明为进程吗?