Можем ли мы добавить еще один UniqueWork в очередь другого UniqueWork с WorkManager - PullRequest
0 голосов
/ 15 февраля 2019

Допустим, я запустил этот UniqueWork с WorkManager : -

var workContinuation: WorkContinuation = WorkManager.getInstance()
                .beginUniqueWork(AppConstants.FILE_CREATOR_TAG,
                        ExistingWorkPolicy.APPEND,
                        firstOneTimeWorkRequest)

Теперь на этом этапе пользователь нашего приложения может захотеть запустить другую работу UniqueWork для какой-то другой задачи, но этозадача должна быть добавлена ​​в очередь вышеупомянутой задачине хочу использовать наблюдаемое решение, в котором я могу отследить, что этот AppConstants.FILE_CREATOR_TAG рабочий сделал, и запустить AppConstants.FILE_DISTRIBUTE_TAG.

1 Ответ

0 голосов
/ 05 августа 2019

Вы должны указать одинаковые uniqueWorkName для обоих работников.См. beginUniqueWork документацию :

uniqueWorkName однозначно идентифицирует этот набор работ.

Если этот метод определяет, что новая работа должна быть поставлена ​​в очередь, ивыполнить все записи предыдущей работы с uniqueWorkName будут удалены.Если этот метод определяет, что новая работа НЕ должна выполняться, то вся цепочка будет считаться неработоспособной.

Если какая-либо работа в цепочке завершится неудачно или будет отменена, все ее зависимые работы наследуют это состояние иникогда не побежитЭто особенно важно, если вы используете APPEND в качестве ExistingWorkPolicy .

Следовательно, ваш код должен быть написан так:

var workContinuation: WorkContinuation = WorkManager.getInstance()
                .beginUniqueWork(AppConstants.SOME_UNIQUE_NAME,
                        ExistingWorkPolicy.APPEND,
                        firstOneTimeWorkRequest)

// ...

var workContinuation: WorkContinuation = WorkManager.getInstance()
                .beginUniqueWork(AppConstants.SOME_UNIQUE_NAME,
                        ExistingWorkPolicy.APPEND,
                        fileDistrubuteTimeWorkRequest)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...