WakefuleBroadcastReceiver
изначально использовался для обработки операций, которые необходимо было выполнить из-за пробуждения (по тревоге), когда операции могли занять некоторое время, например, для передачи по сети.Для этого использовался WakefulBroadcastReceiver
, чтобы Service
мог быть надежно запущен и фактически работал до того, как устройство вернулось в состояние низкого энергопотребления.Это устарело, поскольку такой же тип поведения может быть реализован с использованием других средств, таких как службы переднего плана, JobScheduler
или push-уведомления с высоким приоритетом.Что касается пробуждения, все зависит от того, что вам нужно делать, когда срабатывает ваша сигнализация.Эта статья может быть полезна для понимания AlarmManager
: http://po.st/7UpipA
Аварийные сигналы постепенно уменьшаются в своих возможностях в режиме Doze, который был представлен в API 23. Начиная с Oreo (API 26), фоновые операцииналагаются более жесткие ограничения для увеличения срока службы батареи.
Если вы согласны с использованием программного обеспечения выпуска альфа-уровня, новый WorkManager
- это то, что нужно, поскольку он обрабатывает множество зависимостей версий для вас на основеустройство, на котором работает ваш код.Он будет автоматически использовать JobScheduler
, AlarmManager
и т. Д. В зависимости от того, что вам нужно и на какой версии ОС вы работаете.
Если вы не хотите использовать WorkManager
, я предлагаю покопатьсяв JobScheduler
, чтобы увидеть, будет ли оно соответствовать вашим потребностям.Возможно, вам придется выполнить некоторую проверку уровня API и использовать код AlarmManager
w / WakefulBroadcastReceiver
на некоторых платформах и JobScheduler
на других.