Интересно, почему «обратный вызов» для геообъектов выполняется через ожидающие намерения, а не простой интерфейс обратного вызова.
Главным образом потому, что геофоны предназначены для работы даже без приложения.
При реализации в деятельности, один, как правило, отключать клиент местоположения в OnPause() в любом случае, так что ранее добавленный геозон не будет отслеживаться либо после того, как приложение Приостановлено/было разрушено, так почему ожидающее намерение? Или я ошибаюсь здесь?
Я считаю, что вы ошибаетесь здесь. На самом деле, геозон специально не предназначены для непосредственного запуска пользовательского интерфейса, как обсуждается в the documentation:
Намерение отправлено из Location Services может вызвать различные действия в вашем приложении, но вы не должны его начать деятельность или фрагмент , потому что компоненты должны появляться только в ответ на действие пользователя.
Теперь вы можете сказать, что хотите использовать только геозоны, пока у вас есть активность на переднем плане. Однако вам нужно будет удалить эти геозоны в onPause()
. Геозонность будет оставаться зарегистрированной до истечения срока ее действия или вручную удалена AFAICT.
Да, вы сказали, что абсолютно правильно - я только что попробовал :) – Flo
В моем тестировании образец кода от Google прекратил работать, если мое приложение было убито. Поэтому я переключился на широковещательный приемник вместо IntentService, а затем фоновый мониторинг работал так, как ожидалось. http://stackoverflow.com/questions/19505614/android-geofence-eventually-stop-getting-transition-intents/19521823#19521823 –