Как создать PhoneStateListener, который работает как в режиме ожидания, так и в режиме энергосбережения? - PullRequest
1 голос
/ 15 мая 2019

Когда устройство переходит в режим ожидания или режим энергосбережения, мой PhoneStateListener перестает работать. Также мне нужно зарегистрировать PhoneStateListener при перезагрузке устройства. Я не хочу использовать BroadcastReceiver, потому что он больше не рекомендуется, см. https://developer.android.com/about/versions/oreo/background#broadcasts

1 Ответ

1 голос
/ 30 мая 2019

Я не думаю, что BroadcastReceiver не рекомендуется, это правильное определение на данный момент, оно просто имеет больше ограничений , таких как регистр приемников вещания для неявных передач в манифесте и в соответствии с документами:

  • Приложения могут продолжать регистрироваться для явных передач в их манифестах
  • Приложения могут использовать Context.registerReceiver() во время выполнения для регистрации получателя для любой передачи, неявной или явной.

В режиме Doze имеется несколько ограничений , но он обеспечивает решение для срабатывания сигнализации в режиме Doze в режиме энергосбережения с использованием AlarmManager:

Есливам нужно установить будильник, который срабатывает в режиме Doze, используйте setAndAllowWhileIdle() или setExactAndAllowWhileIdle().

. Вам нужно примерно setAndAllowWhileIdle и setExactAndAllowWhileIdle и решить, какиеодин актуален для вас.

...