假设我们有两个工作线程:WorkerA
和WorkerB
。现在WorkerB
在完成之前无法启动Worker
。通常我们会链接这两个工人:
WorkManager.getInstance()
.beginWith(workA)
.then(workB)
.enqueue()
但问题是我们不知道我们可以开始WorkerB
的确切时刻(我们只知道它必须等待WorkerA
(。
实际上有两种情况:
- 我们希望在
WorkerA
开始时开始WorkerB
,但它还没有完成。 - 我们希望在
WorkerA
完成后开始WorkerB
。
在一个完美的世界里,WorkManager
可以选择等待一些工作或链接到已经存在的工作。
我想过在工作结束之前从WorkerA
开始WorkerB
,但我不确定在返回工作之前从工作访问WorkManager
Result
是否是一种好做法。
创建工作链时,WorkerB
只有在成功完成WorkerA
后才会开始。如果WorkerA
失败,则WorkerB
也会被标记为失败。
如果你想在WorkerA
启动时启动WorkerB
,你可以在WorkerA
的doWork()
方法中排队WorkerB
。请记住,此时两个工作线程都是分离的。