临时禁用 WorkManager 的 Workers

Disable WorkManager's Workers temporary

在我的公司,我们有一个用例,我们需要禁用所有 运行 worker,在完成一些其他工作后我们可以再次启用它们,有没有一种方法可以直接使用 WorkManager 或者我将不得不回退到 cancelAllWork*() 并从头开始让新工人排队,我不想做后者我只想暂停当前工人并在我们完成其他工作后再次恢复他们,有什么解决方案吗?

Jetpack WorkManager 不支持 pause/resume 个当前 Worker,您可能希望将此添加为 public issue tracker 上的功能请求。

如您所写,一种选择是取消所有工作并管理 运行 名工人的停工,如 WorkManager's documentation 中所述。
另一种选择可能是用一个标志来检查所有工作人员,以检查“工作”当前是否已暂停。在这种情况下,您可以 return 一个 Result.retry()。在这种情况下,对工作重试中引入的延迟有一些影响,以及您对已经 运行 的工作人员的要求是什么,一旦您暂停它们(他们是 运行 完成还是停止并在工作后重试重新启动)。