Android PeriodicWorkRequestBuilder, как избежать двойного планирования? - PullRequest
0 голосов
/ 22 мая 2019

Я использую новый WorkManager, и мне было интересно, когда я планирую периодическую работу, как я могу избежать ее перепланирования, автоматически ли она обрабатывается ОС?

Ответы [ 2 ]

1 голос
/ 27 мая 2019

Если вам нужно проверить уже запущенный менеджер работ только потому, что вы не хотите дублировать работы. Вы можете просто использовать enqueueUniquePeriodicWork ()

Этот метод позволяет ставить в очередь уникальное имя PeriodicWorkRequest, где только один PeriodicWorkRequest из конкретное имя может быть активным одновременно. Например, вы можете только хотите, чтобы одна операция синхронизации была активной. Если есть одно ожидание, вы можете разрешите запустить его или замените новой работой.

Так что вам не нужно беспокоиться о дублировании работ.

 workmanager.enqueueUniquePeriodicWork(TAG, ExistingPeriodicWorkPolicy.KEEP , photoCheckWork);
  • Где TAG - это уникальное имя, по которому менеджер работ будет проверять дублирование.
  • Вы можете выбирать между ExistingPeriodicWorkPolicy.KEEP и ExistingPeriodicWorkPolicy.REPLACE.
0 голосов
/ 22 мая 2019

Это периодический работник, поэтому он автоматически выполняет перепланирование следующего вхождения.Чтобы избежать повторного планирования, вы можете вернуть Result.failed () из вашего Worker или отменить WorkRequest из вашего приложения.В этом случае вы должны обработать отмену внутри вашей Worker, как описано в документации .

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