Android Fused Location Provider возвращает кэшированное местоположение? - PullRequest
0 голосов
/ 15 октября 2019

Мое приложение имеет функцию обнаружения местоположения пользователя, и у меня есть журнал отметки времени, когда я запускаю запрос на обновление местоположения

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

Я ошибаюсь? Может ли кто-нибудь помочь мне объяснить, почему это происходит? Есть ли параметр, чтобы принудительно провайдер локализованного местоположения всегда возвращал новое местоположение?

...