【发布时间】:2021-11-01 22:29:39
【问题描述】:
我目前正在使用来自androidx.work:work-runtime-ktx:2.5.0 的CoroutineWorker。
我想要实现的是:
- 使用
beginUniqueWork和相同的uniqueWorkName排队工作人员,使用策略ExistingWorkPolicy.APPEND_OR_REPLACE。 - 这将按顺序运行工作程序,如果工作失败或被取消,预期的行为将是,根据documentation:
如果有失败或取消的先决条件,这些先决条件将被删除,新指定的工作是新序列的开始。
发生的情况是,如果前一个工作人员也被取消(或失败),所有或排队的工作人员都会被取消。这应该是ExistingWorkPolicy.APPEND 而不是ExistingWorkPolicy.APPEND_OR_REPLACE 的预期行为。
任何想法为什么会发生这种情况?如何避免排队的唯一工作人员也被取消?
【问题讨论】:
-
我也在寻找这个问题的答案,但找不到。暂时,无论如何我都使用了 Worker 的返回结果成功,因此链继续。我建议你也在这里查看:twitter.com/danlew42/status/1214562086585421826?s=20
-
感谢您的帮助,不幸的是,这不适用于我的用例,因为我还希望能够取消独特的工作。在这种情况下,返回总是成功将无济于事。
-
stackoverflow.com/a/71657305/847661 可能有助于解释为什么会发生这种情况。
标签: android android-workmanager