FusedLocationClient 间隔在 phone 被锁定时变慢

FusedLocationClient interval Slowing down while phone is locked

所以我现在已经使用 FusedLocationClient 大约 2 个月了。向客户端传递一个位置请求,该请求正确设置了检索位置更新的时间间隔,至少在 phone 为 'awake' 时是这样。如果我将间隔设置为 1 分钟,我几乎每分钟都会获得更新,但是当 phone 被锁定然后我返回应用程序时,我可以看到每 10 分钟更新一次。

任何对 Android 使用 FusedLocationClient 有经验的人都知道为什么会发生这种情况?客户端正在使用 Looper.myLooper() 循环,如果 phone 被锁定,这个线程会变慢吗?

  mLocationRequest = new LocationRequest();
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    mLocationRequest.setInterval(OneMin);
    mLocationRequest.setFastestInterval(OneMin);
    mLocationRequest.setMaxWaitTime(OneMin);

更新原问题******** 因此,在将 Fused Location Client 从回调方法切换到 Pending Intent Method 之后,我仍然得到相同的结果。这个挂起的意图方法应该 运行 客户端从应用程序后台而不是前台,但位置更新仍然减慢到 10 分钟。这是我的未决意图日志。

06-28 07:55:39.201 D/ddd: onHandleIntent: 38.5377347, -106.9408941
06-28 07:56:41.128 D/ddd: onHandleIntent: 38.5377747, -106.9406465
06-28 07:57:43.055 D/ddd: onHandleIntent: 38.5372963, -106.9409439
06-28 07:59:33.098 D/ddd: onHandleIntent: 38.5378022, -106.9406814
06-28 08:10:22.646 D/ddd: onHandleIntent: 38.5378164, -106.9410321
06-28 08:20:35.668 D/ddd: onHandleIntent: 38.5378373, -106.9408016
06-28 08:30:35.790 D/ddd: onHandleIntent: 38.5377677, -106.9407083

从时间戳可以看出间隔从1分钟到10分钟。 关于如何防止这种情况的任何想法? Android 文档深入到兔子洞中,建议使用计划作业,但没有给出直接的示例。

如果您在 Android 8.0(API 级别 26)或更高版本上测试它,它每小时只会检索几次更新。这来自 Android 文档。

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.

设备 运行 API 25 级及更低级别将正常接收后台更新。可以在 Android Versions Overview.

找到更多信息