Я использую новый WorkManager, и мне было интересно, когда я планирую периодическую работу, как я могу избежать ее повторного планирования, она автоматически обрабатывается ОС?
Это периодический рабочий процесс, поэтому он автоматически обрабатывает перепланирование следующего события.
Чтобы избежать повторного планирования, вы можете вернуть Result.failed() из своего Worker или отменить WorkRequest
из своего приложения. В этом случае вы должны обрабатывать отмену внутри своего Worker
, как описано в документация.
Если вам нужно проверить уже запущенный менеджер работ только потому, что вы не хотите дублировать работы. Вы можете просто использовать enqueueUniquePeriodicWork()
This method allows you to enqueue a uniquely-named PeriodicWorkRequest, where only one PeriodicWorkRequest of a particular name can be active at a time. For example, you may only want one sync operation to be active. If there is one pending, you can choose to let it run or replace it with your new work.
Так что вам не нужно беспокоиться о дублировании работ.
workmanager.enqueueUniquePeriodicWork(TAG, ExistingPeriodicWorkPolicy.KEEP , photoCheckWork);
ExistingPeriodicWorkPolicy.KEEP
и ExistingPeriodicWorkPolicy.REPLACE
.