Android LocationListener перестает получать обновления местоположения

Я зарегистрировал location listener, который будет получать обновления местоположения с помощью NETWORK_PROVIDER. Слушатель получает обновления местоположения, если activity находится на переднем плане. Если я выйду из приложения, через некоторое время оно перестанет получать обновления местоположения. Что немного странно... разве он не должен получать обновление местоположения, даже если ни одно из действий не находится в стеке? Слушатель снова начнет получать обновления местоположения, если я вернусь в свое приложение.

Или я что-то не так делаю? Какая модель программирования предлагается для получения обновлений местоположения, даже если ни одно из моих действий не активно (ни на переднем плане, ни в стеке)?

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


person Jahid Shohel    schedule 21.07.2012    source источник
comment
Если вы хотите получить местоположение, когда активность спит, вам нужна блокировка пробуждения и служба.   -  person Shine    schedule 22.07.2012
comment
Вы имеете в виду, что я должен написать услугу? а этот сервис должен реализовывать LocationListener? А что вы имели в виду под блокировкой? Любая ссылка или пример того, что вы упомянули?   -  person Jahid Shohel    schedule 22.07.2012
comment
Я читал о wake lock. Я не хочу блокировку пробуждения. Потому что я не хочу, чтобы устройство бодрствовало. Устройство ведет себя нормально. Пользователь должен иметь возможность заблокировать экран, если он хочет. Превращение слушателя в услугу имело бы больше смысла. Но я не уверен, что это будет правильный подход.   -  person Jahid Shohel    schedule 22.07.2012
comment
@JahidSohel ты решил проблему? если да, не могли бы вы поделиться со мной кодом?   -  person Dinesh T A    schedule 07.01.2015


Ответы (1)


Активность в фоновом режиме в конечном итоге будет уничтожена, у вас нет никакой гарантии, что после остановки она продолжит получать обновления местоположения. Действия в Android не должны использоваться таким образом.

Вы можете использовать службу с блокировкой пробуждения, как было предложено, но поддержание устройства в бодрствующем состоянии быстро разрядит аккумулятор.

Я рекомендую вам выступление Рето Мейера (IO 2011), где он рассказывает о различных стратегиях иметь новое место. Вот код.

person aromero    schedule 22.07.2012
comment
Спасибо за хорошую ссылку на видео. В беседе затрагивается довольно много важных тем. Часть о получении обновлений местоположения составляет примерно от 20 минут 50 секунд до 26 минут 00 секунд. - person Daniel S.; 06.01.2013