Срок переопределения для Work Manager (Android Studio) - PullRequest
0 голосов
/ 01 мая 2020

Теперь, когда Work Manager заменяет планировщик заданий, я пытался выяснить, как установить крайний срок переопределения для Work Manager, используя OneTimeWorkRequest, как мы это делали в планировщике заданий. Я попытался просмотреть набор ограничений, но не смог найти эквивалент. Я также просмотрел параметры в OneTimeWorkRequest.Builder, но снова ничего не нашел. Как бы я go об установлении крайнего срока переопределения?

1 Ответ

1 голос
/ 01 мая 2020

setOverrideDeadline, согласно его документации , заставляет вашу работу запускать , даже если другие ваши ограничения не выполняются . WorkManager этого не делает: он всегда соблюдает ваши ограничения.

Вы, конечно, можете ставить второй рабочий запрос в очередь, используя setInitialDelay на желаемое время в качестве «крайнего срока переопределения». не включая другие ваши ограничения и включающий указанный c тег.

Это означает, что у вас будет два работника очереди:

  1. Реальный работник с ограничениями и тегом скажем, "real_work"
  2. Рабочий переопределения крайнего срока, без ограничений, первоначальной задержки и тега, скажем "override"

Если реальный работник сработает, вы можете позвонить workManager.cancelAllWorkByTag("override") для отмены вашего работника крайнего срока отмены и продолжения работы в обычном режиме.

Если ваш работник крайнего срока отмены срабатывает, это означает, что не было никакого времени между тем, когда вы ставили в очередь своих работников, и крайним сроком отмены. Здесь вы хотели бы выяснить свою альтернативную стратегию (например, поставить в очередь нового работника с меньшими ограничениями и т. Д. c.). Это также место, где вы хотите workManager.cancelAllWorkByTag("real_work"), если хотите, чтобы ваша реальная работа была отменена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...