【问题标题】:FusedLocationClient interval Slowing down while phone is lockedFusedLocationClient 间隔在手机锁定时减速
【发布时间】:2018-06-26 14:38:09
【问题描述】:

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

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

  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 文档正在深入研究建议使用计划作业的兔子洞,但没有给出直接的示例。

【问题讨论】:

    标签: java android gps location android-pendingintent


    【解决方案1】:

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

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

    运行 API 级别 25 及更低级别的设备将正常接收后台更新。更多信息请访问Android Versions Overview

    【讨论】:

    • 谢谢!我很难找出原因,这正是我想要的。我正在运行 API 级别 26,您提供的链接为后台定位行为提供了一些解决方法。太棒了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-05
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多