[英]Android WorkManager fork single into multiple chains and join
我想使用 WorkManager 设置以下工作:
A
|
v
-----
| |
v |
B v
| D
v |
C |
| |
-----
|
v
E
所以首先, A
应该运行,然后B
然后C
而D
并行运行。 之后, E
应该运行。
在运行E
之前加入两个并行链可以使用WorkContinuation.combine()
。 我的问题是我无法弄清楚如何在A
之后分叉成两个平行链。 (如果包含B
和C
的左链不是两个请求的实际链,而只是一个请求,那就很简单了。)
正如您所写,您要构建的链无法使用 WorkManager 实现。 您可以在WorkManager 的 issuetracker上打开功能请求。
回到你的链,我想知道是否可以修改它以适应 WorkManager API:
A
|
v
-----
| |
v |
B v
| D
| |
-----
|
v
C
|
v
E
在这种情况下,您需要使用某种逻辑处理输入合并到C
以便它执行您期望的操作,如果您在Worker
类之间传递了数据。 但是您保持相同的约束(但在这种情况下, C
要求您在启动之前终止D
)。
在这种情况下,按照WorkManager 的文档,您可以使用以下内容:
val workRequestA = OneTimeWorkRequestBuilder<SaveImageToFileWorker>().build()
val workRequestB = OneTimeWorkRequestBuilder<SaveImageToFileWorker>().build()
val workRequestC = OneTimeWorkRequestBuilder<SaveImageToFileWorker>()
.setInputMerger(ArrayCreatingInputMerger::class.java)
.build()
val workRequestD = OneTimeWorkRequestBuilder<SaveImageToFileWorker>().build()
val workRequestE = OneTimeWorkRequestBuilder<SaveImageToFileWorker>().build()
var continution = workManager
.beginWith(workRequestA)
.then(listOf(workRequestB, workRequestD))
.then(workRequestC)
.then(workRequestE)
.enqueue()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.