如何使用工作管理器将新工作链接到已排队的工作



假设我们有两个工作线程:WorkerAWorkerB。现在WorkerB在完成之前无法启动Worker。通常我们会链接这两个工人:

WorkManager.getInstance()
    .beginWith(workA)
    .then(workB)
    .enqueue()

但问题是我们不知道我们可以开始WorkerB的确切时刻(我们只知道它必须等待WorkerA(。

实际上有两种情况:

  1. 我们希望在WorkerA开始时开始WorkerB,但它还没有完成。
  2. 我们希望在WorkerA完成后开始WorkerB

在一个完美的世界里,WorkManager可以选择等待一些工作或链接到已经存在的工作。

我想过在工作结束之前从WorkerA开始WorkerB,但我不确定在返回工作之前从工作访问WorkManager Result是否是一种好做法。

创建工作链时,WorkerB只有在成功完成WorkerA后才会开始。如果WorkerA失败,则WorkerB也会被标记为失败。

如果你想在WorkerA启动时启动WorkerB,你可以在WorkerAdoWork()方法中排队WorkerB。请记住,此时两个工作线程都是分离的。

相关内容

  • 没有找到相关文章

最新更新