暂时禁用WorkManager的工作程序

3
在我们公司,我们有这样一个使用场景,需要禁用所有正在运行的Workers,在执行其他任务后再启用它们。我是否能够直接使用WorkManager来完成这个操作,或者我必须回退到cancelAllWork*()并重新排队新的Workers?我不想采取后一种方式,只想暂停当前的Workers,并在完成其他工作后恢复它们。有什么解决方案吗?

无法暂停作业的执行,您需要将其删除,然后再次添加。 - tyczj
没有公共方法可以暂停/禁用工作程序。https://developer.android.com/reference/androidx/work/WorkManager - javdromero
1个回答

1
Jetpack WorkManager不支持暂停/恢复当前Workers的功能,您可能希望在公共问题跟踪器上将此作为特性请求添加。 正如您所写的,一种选择是取消所有工作,并根据WorkManager的文档中所解释的停止正在运行的Workers。另一个选择是将所有Workers都与一个标志进行控制,如果"工作"当前暂停,则可以返回Result.retry()。在这种情况下,会对工作重试引入一些延迟,并且对于已经运行的Workers,当您暂停它们时,对于要求它们完成运行或在重新启动工作后停止并重试而言,存在一些影响。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接