首页 > 解决方案 > 如何确保 WorkManager 取消我的 Worker?

问题描述

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

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

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

标签: androidandroid-architecture-componentsandroid-workmanager

解决方案


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

但是,如果任务已经在运行,WorkManager 不能安全地中断它。最好的选择是编写 Worker 类来处理外部取消。这已在2018 年 Android 开发者峰会上录制的使用 WorkManager演讲(大约 15 分钟)中进行了介绍。

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


推荐阅读