在我的公司,我们有一个用例,我们需要禁用所有正在运行的工作程序,在完成一些其他工作后我们可以再次启用它们,有没有一种方法可以直接使用 WorkManager 来实现,或者我将不得不回退到cancelAllWork*()
并从头开始让新的 worker 入队,我不想做后者我只想暂停当前的 worker 并在我们完成其他工作后再次恢复它们,有什么解决方案吗?
最佳答案
Jetpack WorkManager 不支持暂停/恢复当前 Worker,您可能希望将此添加为 public issue tracker 上的功能请求.
如您所写,一个选项是取消所有工作并管理正在运行的工作人员的停工,如 WorkManager's documentation 中所述。 .
另一种选择可能是用一个标志来检查所有工作人员,以检查“工作”当前是否已暂停。在这种情况下,您可以返回一个 Result.retry()
。在这种情况下,对工作重试中引入的延迟有一些影响,以及您对暂停后已经在运行的工作人员的要求是什么(他们是运行完成还是停止并在工作重新启动后重试)。
关于android - 临时禁用 WorkManager 的 Workers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69382245/