所以我现在已经和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的漏洞,但是没有给出直接的示例。
答案 0 :(得分:0)
如果您正在Android 8.0(API级别26)或更高版本上进行测试,则每小时只会检索几次更新。这是来自Android文档。
为了减少功耗,Android 8.0(API级别26) 限制后台应用获取用户当前信息的频率 位置。应用程序每次只能收到几次位置更新 小时。
运行API级别25和更低版本的设备将正常接收后台更新。有关更多信息,请访问Android Versions Overview。