FusedLocationClient时间间隔手机锁定时变慢

时间:2018-06-26 14:38:09

标签: java android gps location android-pendingintent

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

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

select="changeSet except ($coreTablesVariable | $coreSequencesVariable | $coreIndexesVariable |$coreForeignConstraintsVariable |$coreViewsVariable)"/>

更新为原始问题******** 因此,在将Fused Location Client从回调方法切换为Pending Intent方法之后,我仍然得到相同的结果。这种待定的意图方法应该从应用程序后台而不是前台运行客户端,但是位置更新仍然会减慢到10分钟。这是我的待定意图记录。

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

从时间戳中您可以看到间隔从1分钟变为10。 关于如何防止这种情况的任何想法? Android文档正在深入研究建议使用Scheduled job的漏洞,但是没有给出直接的示例。

1 个答案:

答案 0 :(得分:0)

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

  

为了减少功耗,Android 8.0(API级别26)   限制后台应用获取用户当前信息的频率   位置。应用程序每次只能收到几次位置更新   小时。

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