Мое приложение имеет функцию обнаружения местоположения пользователя, и у меня есть журнал отметки времени, когда я запускаю запрос на обновление местоположения
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
. Я понимаю, что в этих случаях провайдер локализованного местоположения возвращает кэшированные данные местоположения, которые были вычислены до того, как я запросил обновления местоположения.
Я ошибаюсь? Может ли кто-нибудь помочь мне объяснить, почему это происходит? Есть ли параметр, чтобы принудительно провайдер локализованного местоположения всегда возвращал новое местоположение?