我一直在使用 GoogleApiClient
进行基于时间间隔和位移的后台位置更新的工作和测试。经过几天的测试和分析,我发现了一些输出中的变化,这是我没有预料到的。
在使用基于时间间隔的更新时,我使用
setInterval
和setFastestInterval
,比如我将时间间隔设置为15分钟,最快间隔设置为10分钟,90%的时间我会在预期的间隔(10到15分钟)内得到更新。但有时我注意到更新所需的时间比指定的间隔要长得多,差异约为30分钟和60分钟左右。你有任何想法吗?在使用基于距离的更新时,我使用了
setMinimumDisplacement
,比如我将位移设置为200米,只有在达到200米及以上的静止点才会得到更新(即使在旅行途中,如果距离超过200米,也不会更新)。这正常吗?
我正在使用PendingIntent
类型的位置请求以接收后台位置更新的广播接收器中的位置更新。
fusedLocationProviderClient.requestLocationUpdates(locationRequest, pendingIntent);
在测试期间,位置服务为开启状态且位置模式设置为高精度。
LocationListener
,因为当应用程序终止时它也会被终止。我希望即使应用程序终止也能获取位置更新,这就是为什么我选择了FusedLocationProviderClient
的requestLocationUpdates
的PendingIntent
版本。从setInterval
获取的更新比setMinimumDisplacement
更好,因为来自 setInterval 的位置更准确。 - JoshuasetMinimumDisplacement
甚至不接近近似值。我已经在问题的第二点中解释了它。 - Joshua