如何链新的工作已排队工作,WorkManager的?

问题描述 投票:0回答:1

比方说,我们有两个工人:WorkerAWorkerB。现在WorkerB结束前Worker无法启动。通常我们会连锁这两个工人:

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

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

实际上有两种情况:

  1. 我们希望在WorkerB已经开始启动WorkerA,但它尚未完成。
  2. 我们希望WorkerB结束后开始WorkerA

在一个完美的世界,WorkManager将有一个选项,而不是等待一些工作或链已经存在的工作。

我想到了从WorkerB前,将结束在做的工作开始WorkerA,但我不知道,如果从工作访问WorkManager之前返回Result是一个很好的做法。

android kotlin android-jetpack android-workmanager
1个回答
1
投票

当您创建工作链,后WorkerB成功完成WorkerA才会开始。如果WorkerA失败,那么WorkerB也将被标记为失败。

如果您希望在WorkerB已经开始,你可以排队WorkerAWorkerBWorkerA方法来启动doWork()。请记住,这两个工人在这一点上分离。

© www.soinside.com 2019 - 2024. All rights reserved.