假设我们有两个工作人员:WorkerA
和WorkerB
。现在WorkerB
无法在Worker
完成之前启动。通常,我们将这两个工人链接在一起:
WorkManager.getInstance()
.beginWith(workA)
.then(workB)
.enqueue()
但是问题是我们不知道何时可以开始WorkerB
的确切时间(我们只是知道它必须等待WorkerA
)。
实际上有两种情况:
WorkerB
开始时启动WorkerA
,但尚未结束。WorkerB
完成后开始WorkerA
。在理想环境中,WorkManager
可以选择等待某些工作或链接到已经存在的工作。
我曾考虑过从WorkerB
开始WorkerA
,然后再结束工作,但是我不确定返回WorkManager
之前从Work访问Result
是否合适实践。
答案 0 :(得分:1)
创建工作链时,WorkerB
仅在WorkerA
成功完成之后才开始。如果WorkerA
失败,则WorkerB
也将被标记为失败。
如果要在WorkerB
启动时启动WorkerA
,则可以使用WorkerB
的{{1}}方法将WorkerA
放入队列。请记住,此时两个工作人员都已解耦。