Отмена WorkManager.cancelAllWorkByTag (tag1) разрыв цепочки на другом Worker - PullRequest
0 голосов
/ 20 марта 2020

WorkManager Version = "2.0.1".

I have configured my WorkManager with following code.

WorkManager.getInstance()
                    .beginUniqueWork("MasterWork",
                            ExistingWorkPolicy.APPEND,
                            oneTimeWorkRequest)

Теперь ниже моя конфигурация WorkRequest: -

OneTimeWorkRequest.Builder(WorkerThread::class.java)
                    .setInputData(InputData)
                    .setConstraints(constraints)
                    .setBackoffCriteria(BackoffPolicy.LINEAR,duration, TimeUnit.SECONDS)
                    .addTag("Tag1")
                    .build()

Допустим, я добавляю следующую последовательность работы в beginUniqueWork ("MasterWork").

   Tag1 ---> This is my first OneTimeWorkRequest
   Tag1 ---> After Above
   Tag1 ---> After  Above

   Tag2 ---> This is my first OneTimeWorkRequest
   Tag2 ---> After Above
   Tag2 ---> After  Above

   Tag3 ---> This is my first OneTimeWorkRequest
   Tag3 ---> After Above
   Tag3 ---> After  Above
  1. Теперь рассмотрим следующий вариант использования: Сценарий 1 . Теперь если пользователь отменяет ожидаемого работника Tag2 методом WorkManager.cancelAllWorkByTag (Tag2). Теперь отложенные задания для Tag3 никогда не выполняются.

  2. Теперь рассмотрим следующий вариант использования: Сценарий 2 . Теперь, если пользователь отменяет ожидаемого рабочего Tag3 методом WorkManager.cancelAllWorkByTag (Tag3). Теперь ожидающие работы для Tag2 выполняются после завершения всех рабочих Tag1.

    Ожидается ли поведение очереди WorkManager? Похоже, что если средняя очередь того же UniqueWork отменяется с помощью метода cancelAllWorkByTag (Tag2), это может привести к разрыву цепочки. Что может быть предпочтительным решением?

...