【发布时间】:2018-12-28 01:12:39
【问题描述】:
WorkManager 文档中提到取消 Worker 是尽力而为
WorkManager 尽最大努力取消任务,但这是 本质上是不确定的——任务可能已经在运行或完成 你试图取消它
如果我有一个用例强制 Worker 在调用其中一种取消方法时被取消怎么办?
【问题讨论】:
标签: android android-architecture-components android-workmanager
WorkManager 文档中提到取消 Worker 是尽力而为
WorkManager 尽最大努力取消任务,但这是 本质上是不确定的——任务可能已经在运行或完成 你试图取消它
如果我有一个用例强制 Worker 在调用其中一种取消方法时被取消怎么办?
【问题讨论】:
标签: android android-architecture-components android-workmanager
正如您所写,WorkManager 只能尽力取消工作。特别是,如果一个任务计划运行,而您取消它,WorkManager 会将其从计划中删除。
但是,如果任务已经在运行,WorkManager 无法安全地中断它。最好的选择是编写 Worker 类来处理外部取消。这已在 2018 年 Android 开发者峰会上记录的Working with WorkManager talk (around minute 15) 中进行了介绍。
要成为一个好公民,您可以使用以下方法汇集 WorkManager:ListenableWorker.isStopped()。您可以将此与onStopped 回调结合使用,以在您或操作系统请求停止任务时清理您的代码。
【讨论】: