如何确保WorkManager取消我的Worker任务?

5

在WorkManager文档中提到,取消Worker是尽力而为的。

WorkManager会尽最大努力取消任务,但这是不确定的——当您尝试取消任务时,任务可能已经在运行或完成。

如果我有一个使用案例,需要在调用取消方法之一时强制取消Worker怎么办?

1个回答

4

正如您所写的,WorkManager只能尽力取消任务。特别地,如果任务已被安排运行并且您取消了它,WorkManager将从计划中删除该任务。

然而,如果任务已经在运行,WorkManager无法安全地中断它。最好的选择是编写您的Worker类时考虑外部取消。这在 Android Developer Summit 2018 中记录的 Working with WorkManager talk(大约在第15分钟)中已经介绍过。

为了成为一个好的工具,您可以使用方法ListenableWorker.isStopped()来池化WorkManager。您可以结合onStopped回调来清理代码,当您或操作系统请求停止任务时。


非常感谢,我看了视频,似乎这是目前处理取消的最佳方法。 - y.allam

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