Ответ 1
Возможно, с помощью разрешения REQUEST_IGNORE_BATTERY_OPTIMIZATIONS. Это разрешение не требует явного разрешения пользователя. Так будет предоставлено. Хотя это не помешает пользователю вручную остановить приложение.
От документы:
Это нормальное разрешение: приложение, запрашивающее его, всегда будет предоставил разрешение, без необходимости его одобрения или просмотра.
ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS помещает приложение в белый список устройства.
isIgnoringBatteryOptimizations сообщит вам, включено ли приложение в белый список.
некоторые заметки из документы:
Примечание: большинство приложений не должны использовать это; есть много объектов предоставляемые платформой для правильной работы приложений в различные режимы энергосбережения. Это касается только необычных приложений, которые необходимо глубоко контролировать свое собственное исполнение с потенциальными расходами от времени автономной работы пользователя. Обратите внимание, что эти приложения сильно работают риск показать пользователю, как потребители высокой мощности на своих устройство.
Ввод: URI данных Intent должен указывать имя пакета приложения который будет показан, с помощью схемы "пакет". Это "пакет: com.my.app".
Это не то, что я рекомендую злоупотреблять.
Существует список Применимые примеры использования для белого списка.
В общем, ваше приложение не должно быть в белом списке, если только Doze или App Standby нарушает основную функцию приложения или существует технический причина, по которой ваше приложение не может использовать высокоприоритетные сообщения FCM.
Благодаря adsamcik для этой последней ссылки.