Android 8 (Oreo) 中的背景位置限制是什么?

What are the background location limits in Android 8 (Oreo)?

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

In an effort to reduce power consumption, Android 8.0 (API level 26) limits how frequently background apps can retrieve the user's current location. Apps can receive location updates only a few times each hour.

该文档未提供有关后台位置检索频率限制的任何具体信息。

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

"only a few times"到底是多少次?

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

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

我尝试了 Job Scheduler、Worker、AlarmManager、AlarmManager with Wake Lock 和 'setAndAllowWhileIdle()',它们都给出了相同的结果:完全活跃的位置变化持续 45 分钟左右,而不是每 15 分钟才变化一次分钟左右(如果幸运的话:可能会超过一个小时,而且似乎无法预测)

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