Я пишу простое приложение, содержащее два элемента - Сервис и Активность.Активность используется только для запуска и остановки сервиса.Сервис использует PhoneStateListener
для получения информации о текущих CellID, LAC и RSSI (уровень сигнала) и записи их в файл.
Все работает нормально, когда телефон не спит.Я заметил, что после выключения экрана и нескольких минут бездействия мой PhoneStateListener
больше не вызывается.Я попытался добавить PARTIAL_WAKE_LOCK (и другие типы блокировок) в мой сервис, но я предполагаю, что это вызывает серьезную разрядку батареи и не должен использоваться таким образом.С другой стороны, это мне не очень помогло.Моя другая попытка состояла в том, чтобы использовать Таймер и отменить регистрацию / регистрацию моего PhoneStateListener
через указанные интервалы.Неожиданно, похоже, что этот способ помог с обновлением CellId и LAC (так что я думаю, что onCellLocationChanged()
от моего слушателя был вызван), но уровень сигнала все еще не обновился.
Я не пробовал использоватьBroadcastReciever
, но после некоторого изучения темы и чтения тем на SO, я не думаю, что это будет работать для меня.
Подводя итог, мой вопрос: почему методы PhoneStateListener
не вызываются, когда телефонво сне?Есть ли способ (например, заставить телефон проснуться или использовать другой механизм), чтобы эффективно преодолеть это поведение?