getLastKnownLocation () против requestLocationUpdates () - PullRequest
0 голосов
/ 06 октября 2018

Я удивлен и хотел бы попросить прощения, но не смог найти четкого ответа на принципиальную разницу между ними.Итак, вот мое требование:

Я бы хотел фиксировать местоположение пользователя с интервалом каждые 5 минут.Для планирования в целом я использую JobScheduler и делаю всю работу в фоновом режиме.Итак, я использую задание, запланированное каждые 5 минут, чтобы выполнить вышеизложенное.

Как мне его выполнить?

  • В настоящее время я использую LocationManager.getLastKnownLocation() чтобы получить исправление с разными провайдерами (GPS, сеть)

Я исследовал и, кажется, что может быть лучший вариант получить исправление - используйте PendingIntent для получения обновлений местоположения, используяrequestLocationUpdates().

Итак, вот проблема:

Документально подтверждено, что если я getLastKnownLocation() возвращает свое текущее местоположение, а затем я выключаю свое устройство, проезжаю 30 миль и поворачиваю егообратно (с включенным GPS, конечно), getLastKnownLocation() вернет мне местоположение на 30 миль старше.

Но, я запутался относительно местоположения, возвращенного requestLocationUpdates().Вернет ли это новое место?

1 Ответ

0 голосов
/ 06 октября 2018

getLastKnownLocation вернет местоположение, только если оно уже включено.Он вернется немедленно.99% времени он вернет ноль.Он не включает аппаратное или программное обеспечение для определения местоположения.Его можно использовать как оптимизацию, но на него никогда не следует полагаться.Если вы не уверены в том, что делаете, вы должны забыть, что эта функция существует.

requestLocationUpdates немедленно ничего не вернет и вернет местоположение для обратного вызова.Это никогда не вернет ноль.Он включает аппаратное и программное обеспечение для определения местоположения и отправляет вам обновления при изменении местоположения.Он может никогда не вызвать обратный вызов, если по какой-то причине не может определить местоположение (режим полета, в туннеле и не может достичь спутников для GPS и т. Д.).Он должен использоваться всякий раз, когда вам нужно получать обновления местоположения.

requestSingleUpdate аналогичен requestLocationUpdates, за исключением того, что он вызовет только один раз обратный вызов, а затем снова отключит отслеживание местоположения.Его следует использовать, когда вы просто хотите определить местоположение прямо сейчас, и вам не нужны обновления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...