android - Android jetpack 如何在另一个链的特定工作任务后启动一个单独的工作管理器链
问题描述
我想用 jetpack workmanager 链来实现这个场景:
- 链 1 = A -> B -> c
- chain2 = Z(只有一个 WorkRequest)
- 链 3 = D -> E -> F
完成chain1后,chain2和chain3同时启动
我已经在文档中找到了这个,但这与我需要的相反。 WorkContinuation.html#combine
解决方案
当您将一组工作链接在一起时,您使用then
需要单个OneTimeWorkRequest
. 您可以使用then
带有列表的OneTimeWorkRequest
来拆分链。
根据链接工作文档:
如果您添加 OneTimeWorkRequests 列表,这些请求可能会并行运行。
导致您想要的行为。
val workManager = WorkManager.getInstance(myContext)
// Create all your work
val workA, workB, workC, workZ, workD, workE, workF
// Then build chain1
val chain1 = workManager.beginWith(workA)
.then(workB)
.then(workC)
// Now link in both Z and D
chain1.then(workZ, workD)
.enqueue()
// There's nothing after Z, so there's no explict work
// you need to do for chain2
// Then build off of D to finish chain3
workManager.beginWith(workD)
.then(workE)
.then(workF)
.enqueue()
推荐阅读
- php - AWS s3 使用 PHP 列出对象键
- c# - 输出导致项目名称而不是枚举类型?
- javascript - JavaScript:如何仅显示一个插入字符串的数组项?
- php - Wordpress - 如何在自定义 Visual Composer 元素中指定 ID
- html - 如何在 Angular 5 中动态选择下拉列表?
- mingw - msys2 (mingw) 默认库/包含路径配置
- azure - 无法访问 Azure Active Directory
- python - 如何调整matplotlib中每第二行子图之间的空间
- javascript - 如何跟踪菜单中的 CSS 类?
- c# - 查询不为空时,Automapper 投影返回空列表