我的应用程序具有检测用户位置的功能,并且在我开始请求位置更新时有时间戳记
LocationRequest mLocationRequest = LocationRequest.create();
mLocationRequest.setInterval(100);
mLocationRequest.setPriority(LocationRequest.PRIORITY_LOW_POWER);
mLocationRequest.setFastestInterval(100);
long startLocationUpdateTime = SystemClock.elapsedRealtimeNanos();
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, mLocationListener);
当我收到位置更新信息时,我还会记录位置修复的时间戳
@Override
public void onLocationChanged(Location location) {
long locationElapsedTime = location.getElapsedRealtimeNanos();
// start process location update from here
}
大多数时候它可以正常工作,但是我看到一些日志显示startLocationUpdateTime
大于locationElapsedTime
。我了解在这种情况下,Fused Location Provider返回在我请求位置更新之前计算的缓存位置数据。
我错了吗?有人可以帮我解释为什么会这样吗?是否有设置来强制“位置信息提供者”始终返回新位置?