首页 > 解决方案 > 动态设置工作请求顺序

问题描述

我有一些很长的任务,我想把它分成几个小子任务:

  1. 第一个worker下载任务列表并根据下载结果对n个任务进行排队;
  2. 下一个工人做它的小任务:它确实检查,如果它是真的,不需要更多的动作完成子任务,它会将下一个工作请求排入队列;
  3. 如果检查失败:第三个工作人员从远程服务器加载数据,如果成功,我们将新的 WorkRequest 入队以将数据存储在磁盘上,esle 任务失败(或重试);
  4. 如果加载了数据,最后一个worker将数据存储在磁盘上,如果成功,我们完成子任务,否则失败。

我们总共有 4 名工人在做不同的事情。第 2 和第 4 个工作请求的结果必须合并为一个最终结果。

我的问题是如何将它们连接起来,合并结果,以及如何将工作排入队列?

标签: androidandroid-workmanager

解决方案


要连接 Workers,在 WorkManager 中,您可以使用WorkContinuation。通过这种方式,您可以将多个任务排入队列,作为构建复杂管道的一系列步骤。这在WorkManager 的文档中进行了解释。

那么是否可以androidx.work.Data用作轻量级容器将数据传递给工作人员,但这不应被视为您的数据存储。作为一个例子,你可以看看这是如何在WorkManager 的 codelab中实现的。

如果您需要在 Worker 之间传递更多数据,最好的选择可能是将它们卸载到数据层。


推荐阅读