Когда вы объединяете один набор работ вместе, вы используете 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()