如何确保 WorkManager 取消我的 Worker?
How to make sure that WorkManager cancels my Worker?
WorkManager 文档中提到取消 Worker 是尽力而为
WorkManager makes its best effort to cancel the task, but this is
inherently uncertain--the task may already be running or finished when
you attempt to cancel it
如果我有一个用例强制 Worker
在调用其中一种取消方法时被取消怎么办?
正如您所写,WorkManager 只能尽最大努力尝试取消工作。特别是,如果任务计划 运行,而您取消了它,WorkManager 会将其从计划中删除。
但是,如果任务已经 运行ning,WorkManager 无法安全地中断它。最好的选择是您编写 Worker class 来处理外部取消。这已在 Android 2018 年开发者峰会上记录的 Working with WorkManager talk (around minute 15) 中介绍。
要成为一个好公民,您可以使用以下方法将 WorkManager 集中起来:ListenableWorker.isStopped()
. You can combine this with the onStopped
回调以在您或 OS 请求停止任务时清理您的代码。
WorkManager 文档中提到取消 Worker 是尽力而为
WorkManager makes its best effort to cancel the task, but this is inherently uncertain--the task may already be running or finished when you attempt to cancel it
如果我有一个用例强制 Worker
在调用其中一种取消方法时被取消怎么办?
正如您所写,WorkManager 只能尽最大努力尝试取消工作。特别是,如果任务计划 运行,而您取消了它,WorkManager 会将其从计划中删除。
但是,如果任务已经 运行ning,WorkManager 无法安全地中断它。最好的选择是您编写 Worker class 来处理外部取消。这已在 Android 2018 年开发者峰会上记录的 Working with WorkManager talk (around minute 15) 中介绍。
要成为一个好公民,您可以使用以下方法将 WorkManager 集中起来:ListenableWorker.isStopped()
. You can combine this with the onStopped
回调以在您或 OS 请求停止任务时清理您的代码。