比方说,我们有两个工人:WorkerA
和WorkerB
。现在WorkerB
结束前Worker
无法启动。通常我们会连锁这两个工人:
WorkManager.getInstance()
.beginWith(workA)
.then(workB)
.enqueue()
但问题是,我们不知道确切的时刻,我们就可以开始WorkerB
(我们只是它必须等待WorkerA
)。
实际上有两种情况:
WorkerB
已经开始启动WorkerA
,但它尚未完成。WorkerB
结束后开始WorkerA
。在一个完美的世界,WorkManager
将有一个选项,而不是等待一些工作或链已经存在的工作。
我想到了从WorkerB
前,将结束在做的工作开始WorkerA
,但我不知道,如果从工作访问WorkManager
之前返回Result
是一个很好的做法。
当您创建工作链,后WorkerB
成功完成WorkerA
才会开始。如果WorkerA
失败,那么WorkerB
也将被标记为失败。
如果您希望在WorkerB
已经开始,你可以排队WorkerA
在WorkerB
的WorkerA
方法来启动doWork()
。请记住,这两个工人在这一点上分离。