Android jetpack Как запустить отдельную цепочку менеджера работ после выполнения конкретной задачи другой цепочки - PullRequest
0 голосов
/ 10 ноября 2019

Я хочу реализовать этот сценарий с цепочками менеджера рабочих пакетов Jetpack:

  • chain1 = A -> B -> c
  • chain2 = Z (только один WorkRequest)
  • chain3 = D -> E -> F

После того, как chain1 завершено, chain2 и chain3 запускаются одновременно

Я уже нашел это в документации, но этонапротив того, что мне нужно. WorkContinuation.html # скомбинировать

1 Ответ

0 голосов
/ 10 ноября 2019

Когда вы объединяете один набор работ вместе, вы используете then, который занимает один OneTimeWorkRequest. Вы можете использовать then, который принимает список OneTimeWorkRequest для разделения цепочки.

Согласно рабочей документации по цепочке :

Если вы добавите список OneTimeWorkRequests, эти запросы могут потенциально выполняться параллельно.

В результате вы получите именно то поведение, которое вам нужно.

val workManager = WorkManager.getInstance(myContext)

// Create all your work
val workA, workB, workC, workZ, workD, workE, workF

// Then build chain1
val chain1 = workManager.beginWith(workA)
    .then(workB)
    .then(workC)

// Now link in both Z and D
chain1.then(workZ, workD)
    .enqueue()

// There's nothing after Z, so there's no explict work
// you need to do for chain2

// Then build off of D to finish chain3
workManager.beginWith(workD)
    .then(workE)
    .then(workF)
    .enqueue()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...