0

Я разрабатываю приложение, которое проверяет погоду на основе текущего местоположения каждые 3 часа. Я получаю местоположение с помощью FusedLocationProviderApi и использую pendingIntent для BroadCastReceiver, которые запускают IntentService.Инициировать периодические обновления местоположения с использованием FusedLocationProviderApi или вместо этого использовать AlarmManager

В FusedLocationProviderApi вы можете указать период интервала при создании LocationRequest. Поэтому, если я укажу интервал на 3 часа, а самый быстрый интервал - на 3 часа (я не хочу получать обновления до этого), что произойдет, если местоположение недоступно, когда пришло время сделать обновление местоположения?

Смогу ли я получить намерение обновления местоположения в назначенное время? Я хотел бы использовать последнее известное местоположение, если оно недоступно, но я должен быть уверен, что я все еще получаю PendingIntent в запланированное время.

Или лучше использовать диспетчер аварийных сигналов для обработки периодической работы и вместо этого запросить обновление местоположения из IntentService?

Благодаря

ответ

0

В FusedLocationProviderApi можно указать период интервала, когда вы создаете LocationRequest. Поэтому, если я укажу интервал на 3 часа, а самый быстрый интервал - на 3 часа (я не хочу получать обновления до этого), что произойдет, если местоположение недоступно, когда пришло время сделать обновление местоположения?

В этом устройстве scscio необходимо пробудиться, чтобы сохранить ваш запрос на местоположение. Таким образом, это означает, что вы должны иметь безусловное (теоретически) фоновое обслуживание и частичную блокировку слежения. Они звучат не очень хорошо.

Вместо этого вы можете обратиться к подходу AlarmManager, который настроен на пробуждение каждые 3 часа. Тогда идея работает, как показано ниже

  • Устройство просыпается
  • делает запрос местоположения как можно скорее (установить значение интервала до нуля)
  • продолжает спать после получения местоположения (а также делать свою фактическую работу)
+0

Благодарю. Я думал, что использование PendingIntent для обновления местоположения в WakefulBroadcastReceiver, которое запускается в IntentService, которое запрашивает погоду для этого местоположения, позаботится о случае, если устройство находится в спящем режиме (не заставляя его бодрствовать во время ожидания). – stefanb

+0

У вас есть опыт в отношении того, насколько надежна периодическая отчетность из FusedLocationProviderApi. Насколько он надежный, как AlarmManager? – stefanb

+0

Пожалуйста, проверьте эту библиотеку [cwac-locpoll] (https://github.com/alexbirkett/cwac-locpoll). Это именно то, что вам нужно, но использует LocationManager. Вы можете реализовать платный провайдер местоположения вместо старого. – Blackkara