【发布时间】:2018-02-25 12:38:17
【问题描述】:
我在打瞌睡模式下尝试在我的 android 应用程序中获取位置更新,这曾经适用于 android 5.x。随着 android 6 和 doze 的出现,无论我做什么,更新都会在某个时候停止。在阅读了有关该主题的几篇文章和 stackoverflow 答案后,我进行了以下更改:
- 使我的服务成为前台服务
- 使服务持有部分唤醒锁
- 我已授予我的应用 WAKE_LOCK 权限
- 使服务在单独的进程中运行(用于解决某些 android 错误)
- 我已为我的应用禁用电池优化
但是,当打瞌睡开始时,我仍然没有收到位置更新。我已经验证我的服务线程在打瞌睡开始时继续运行(通过定期记录消息),但不知何故,位置管理器停止发送更新。在这方面,关于打瞌睡和 LocationManager 的文档非常少,所以我想知道是否有人知道如何让位置管理器在打瞌睡中保持活力? LocationManager 上是否有一些方法,如果定期调用将使 LocationManager 保持活动状态? 请注意,我只对 GPS 更新感兴趣,更新频率很高,每秒一次。
【问题讨论】:
标签: android locationmanager android-gps android-doze