如何确保工作管理器取消我的工作线程



在WorkManager文档中提到,取消Worker 是最好的努力

工作管理器尽最大努力取消任务,但这是 固有的不确定性 - 任务可能已经在运行或完成 您尝试取消它

如果我有一个用例,即在调用其中一个取消方法时必须取消Worker怎么办?

正如你所写的,WorkManager只能尽最大努力取消工作。特别是,如果计划运行任务,而您取消了它,则 WorkManager 会将其从计划中删除。

但是,如果任务已在运行,则 WorkManager 无法安全地中断它。最好的选择是编写 Worker 类来处理外部取消。这在 2018 年 Android 开发者峰会上录制的 Working with WorkManager 演讲(大约第 15 分钟)中有所介绍。

要成为一个好公民,您可以使用以下方法池工作管理器:ListenableWorker.isStopped()。您可以将此回调与onStopped回调结合使用,以便在您或操作系统请求停止任务时清理代码。

最新更新