Android 8(Oreo)中的后台位置限制是什么?

5

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

为了降低功耗,Android 8.0(API级别26)限制后台应用程序获取用户当前位置的频率。每小时应用程序只能接收到位置更新几次。文档没有给出有关后台位置检索频率限制的具体信息。假设我的应用程序在Android O设备上运行,不进入前台并且不接收任何被动位置更新,我可以可靠地期望它接收到多少次位置更新?“几次”是多少次?

1
谷歌在文档中没有明确指定“只有几次”。您需要通过一些日志机制来检查它。 - Faizan Mubasher
谷歌在文档中说“只有几次”。 - PrashanD
这就是我所说的。启动后台服务并在每次接收到位置时(假设安卓没有杀死您的服务),记录时间并将其记录在某个文件中。 - Faizan Mubasher
@FaizanMubasher 是的,我知道那是可能的:)只是在开发一个具有高频率位置更新的基于位置的应用程序时,正在寻找官方答案。 - PrashanD
1
这简直是荒谬的说法,只说“每小时只有几次”,却没有解释如何计算这个“只有几次”! - Rahul Rastogi
1
@RahulRastogi 是的,我发现谷歌地图应用程序能够在后台模式下报告用户位置数据进行实时交通分析,这非常不可靠。 - PrashanD
1个回答

1
这是一个很久以前的问题,但最近我花了很多时间尝试让类似这样的应用程序工作。我在旧版Android中有一个完美的应用程序,但现在似乎不可能了。
答案可能因设备而异,但对于我的Galaxy S7装置(Oreo),我可以随意设置位置更改,甚至每5秒一次。但是,45-60分钟的空闲后,服务将减慢速度,直到手动将应用程序带到前台为止。
我尝试过Job Scheduler、Worker、AlarmManager、带Wake Lock的AlarmManager和“setAndAllowWhileIdle()”,它们都给出相同的结果:完全活动的位置更改约45分钟左右,然后只有每15分钟左右一次(如果你幸运的话:可能超过一个小时,看起来不可预测)。
[编辑,一年后] 我现在已经成功改进了此功能,通过每小时重新启动(使用闹钟)(后台)位置服务,按请求每2分钟进行更新(已经超过一周了...)-但仅当设备处于开机状态或移动状态时才进行更新。如果在电池上,并且位置没有改变,则更新会恢复到每小时左右。Android 11上也是如此。请参阅我的新问题here

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接