android - 动态设置工作请求顺序
问题描述
我有一些很长的任务,我想把它分成几个小子任务:
- 第一个worker下载任务列表并根据下载结果对n个任务进行排队;
- 下一个工人做它的小任务:它确实检查,如果它是真的,不需要更多的动作完成子任务,它会将下一个工作请求排入队列;
- 如果检查失败:第三个工作人员从远程服务器加载数据,如果成功,我们将新的 WorkRequest 入队以将数据存储在磁盘上,esle 任务失败(或重试);
- 如果加载了数据,最后一个worker将数据存储在磁盘上,如果成功,我们完成子任务,否则失败。
我们总共有 4 名工人在做不同的事情。第 2 和第 4 个工作请求的结果必须合并为一个最终结果。
我的问题是如何将它们连接起来,合并结果,以及如何将工作排入队列?
解决方案
要连接 Workers,在 WorkManager 中,您可以使用WorkContinuation。通过这种方式,您可以将多个任务排入队列,作为构建复杂管道的一系列步骤。这在WorkManager 的文档中进行了解释。
那么是否可以androidx.work.Data
用作轻量级容器将数据传递给工作人员,但这不应被视为您的数据存储。作为一个例子,你可以看看这是如何在WorkManager 的 codelab中实现的。
如果您需要在 Worker 之间传递更多数据,最好的选择可能是将它们卸载到数据层。
推荐阅读
- pyspark - 在 Azrue Data Lake 容器中合并文件
- sql - 跨小时结束创建两条具有相同信息的记录
- c# - 仅选择一项时,防止在列表中创建所有服务
- javascript - 弹出 HTML 到最后查看的页面
- wordpress - WordPress 电子商务电子邮件
- python - DocuSign 集成。是否可以在未经用户同意的情况下获得身份验证令牌。我想使用我的凭据在内部发送 docusign 信封电子邮件
- python - 如何在 Go 中使用协议缓冲区 FieldMask
- spring-boot - 如何在spring boot gradle项目中将时间戳附加到jar?
- android - 适用于 Android 的 AutoLink 撰写文本
- angular - 使用变量时,Angular Cloudinary 宽度不起作用