我有一个无尽的前台服务,请求位置每 10 秒更新一次,同时它会将此位置和其他信息发送到数据库。 我设法在应用程序处于后台或手机处于待机状态时更新位置。 该应用程序可以正常工作几天,但由于某种我无法理解的原因,当手机仍在运行时,位置以某种方式停止,并且服务仍然发送其他信息。
手机会停止请求位置但仍运行前台服务是否有原因?
该服务被设置为粘性服务,因此如果内存空间不足,它应该重新启动,并且在服务启动时会触发请求更新位置。
我的应用程序的“始终允许”位置设置处于启用状态,就像我说的,可以正常工作 2 到 3 天。
我正在考虑有关电池电量不足以运行位置请求的问题,但到目前为止没有发现任何关于该主题的信息。
我还尝试了唤醒锁来保持应用程序更新位置,但没有成功。
对于其他仍在寻找答案的人。我遇到了同样的问题。答案实际上就在文档中。
您必须按照文档中的说明设置 foregroundServiceType。
<service
android:name=".MyMediaPlaybackService"
android:foregroundServiceType="mediaPlayback"
android:exported="false">
</service>
通过以下链接查找更多信息:
https://developer.android.com/about/versions/14/changes/fgs-types-required