首页 > 解决方案 > 临时禁用 WorkManager 的 Workers

问题描述

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

标签: androidkotlinandroid-architecture-componentsjob-schedulingandroid-workmanager

解决方案


Jetpack WorkManager 不支持暂停/恢复当前 Worker,您可能希望将此作为功能请求添加到公共问题跟踪器上。

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


推荐阅读