Мы обнаружили проблему, когда у пользователя включена функция энергосбережения.
Если рабочий процесс поставлен в очередь без NetworkType.CONNECTED, он запускается каждые 15 минут, но не выполняет запрос API с исключением java.net.UnknownHostException. Это происходит из-за режима ожидания, который приостанавливает сетевой трафик.
Если рабочий процесс поставлен в очередь с NetworkType.CONNECTED, рабочий процесс перестает работать, поскольку ограничение никогда не выполняется.
Документация WorkManager по этой проблеме очень запутанна, поскольку в ней говорится:
Кроме того, WorkManager придерживается мощных сохраняя функции и рекомендации, такие как режим ожидания, поэтому вам не о чем беспокоиться.
Но, похоже, это не так.< /p>
Насколько я вижу, есть три возможных решения:
- Одним из решений может быть установка работника для ускорения работы.
Это не гарантировано, а просто "менее вероятно"
- Используйте намерение Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, что настоятельно не рекомендуется и, возможно, даже нарушает политику Google Play.
- Использование уведомлений FCM для запуска работника кажется совершенно неубедительным.
Подробнее здесь: https://stackoverflow.com/questions/786 ... orkmanager