5

https://developer.android.com/about/versions/oreo/background-location-limits

为了降低功耗,Android 8.0(API 级别 26)限制了后台应用程序检索用户当前位置的频率。应用每小时只能接收几次位置更新。

该文档没有详细说明背景位置检索频率的限制。

假设我在 Android O 设备上运行的应用程序没有进入前台并且没有收到任何被动位置更新,我可以可靠地期望它接收多少次位置更新?

“只有几次”究竟是多少次?

4

1 回答 1

1

现在是一个很老的问题,但我最近花了很多时间试图让这样的应用程序正常工作。我在较旧的 Android 版本中有一个完美的应用程序,但现在看来不可能。

答案可能会因设备而异,但使用我的 Galaxy S7 设备(奥利奥),我可以根据需要设置位置,甚至每 5 秒一次。但是在闲置 45-60 分钟后,服务只会变慢,直到应用再次手动进入前台。

我已经尝试了带唤醒锁和“setAndAllowWhileIdle()”的 Job Scheduler、Worker、AlarmManager、AlarmManager,它们都给出了相同的结果:完全活动的位置更改大约 45 分钟,而不是每 15 分钟左右更改一次(如果你很幸运:可能会超过一个小时,而且似乎无法预测)

[编辑,一年后]我现在已经设法改进了这一点,通过每小时重新启动(后台)位置服务(使用警报),根据要求每 2 分钟更新一次(现在已经超过一周......) - 但是仅当设备通电或移动时。如果使用电池,并且位置没有改变,则更新将恢复为每小时左右。在 android 11 上也一样。在这里​​查看我的新问题

于 2020-12-05T16:01:36.363 回答