Можно ли запустить Android Periodi c и Onetime worker в режиме ожидания или в режиме ожидания приложения? - PullRequest
0 голосов
/ 07 августа 2020

У меня есть приложение, которое использует как periodi c, так и одноразовые рабочие для выполнения различных задач, некоторые из которых требуют подключения к сети. Мой клиент сообщил мне, что некоторая необходимая ежедневная задача не была выполнена в тот день, когда он вообще не использовал приложение. Несмотря на то, что приложение не запускалось в определенный день, рабочим все равно нужно запускать, чтобы отправлять различную статистику на внутренний сервер. Я предполагаю, что это связано с тем, что приложение было в режиме ожидания приложения в течение всего дня, а также что устройство находилось в режиме ожидания хотя бы часть дня. Итак, мой вопрос: можно ли запустить periodi c или одноразовый рабочий процесс, когда приложение находится в режиме ожидания приложения или режиме ожидания, или он всегда будет откладываться до тех пор, пока устройство и / или приложение не проснутся?

Как вариант, не лучше ли мне использовать будильники вместо рабочих? Я вижу, что можно установить аварийный сигнал, используя setExactAndAllowWhileIdle(), который «будет разрешен запускаться, даже когда система находится в режимах холостого хода с низким энергопотреблением». Подразумевает ли "режим ожидания" дремоту и / или режим ожидания приложения?

Я уже давно борюсь с этим, поэтому приветствую любую помощь и / или рекомендации.

1 Ответ

0 голосов
/ 07 августа 2020

Диспетчер работ - это отложенная фоновая работа, когда выполняются ограничения работы. если все ограничения, установленные для WorkRequest, выполнены, Work все равно может быть запущен с некоторой дополнительной задержкой. Это потому, что WorkManager соблюдает стратегии оптимизации Android батареи. Кроме того, вы можете узнать больше об ограничении WorkManager, чтобы понять ограничение работы здесь: https://developer.android.com/reference/androidx/work/Constraints.Builder.html

...