Android. При использовании LocationManager.requestLocationUpdates мне нужен WakeLock?
Мое приложение периодически проверяет местоположение с помощью аварийного сигнала на BroastcastReceiver
, который запускает службу. Я знаю, что я должен приобрести wakelock, прежде чем начать сервис, но мой вопрос, когда я могу его отпустить?
Если я выпущу wakelock после вызова requestLocationUpdates
, может ли устройство переспать и не вызвать мой LocationListener
, или устройство всегда проснется, чтобы доставлять обновления и бодрствовать до тех пор, пока обратный вызов не вернется? Я неохотно держусь за wakelock, потому что это помешает устройству спать между обновлениями, пока я не покончу с местоположением.
Ответы
Ответ 1
Итак, основываясь на моем опыте (и подтвержденном в комментариях здесь), освобождение блокировки после того, как вызов requestLocationUpdates
, похоже, не является проблемой. К сожалению, единственный способ получить окончательный ответ - спросить разработчика платформы, но я получил отклик.
Ответ 2
проверьте режим энергосбережения в настройках системы Android: он должен быть отключен, чтобы позволить менеджеру местоположений генерировать местоположение обновления, когда экран выключен; протестировано на Samsung A5; Я нашел два дня, чтобы найти это решение: -)