android - 如何确保 WorkManager 取消我的 Worker?

标签 android android-architecture-components android-workmanager

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 会将其从计划中删除。

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

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

关于android - 如何确保 WorkManager 取消我的 Worker?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53924702/

相关文章:

android - 为什么 LiveData 观察者会被新附加的观察者触发两次

android - 如何用 Android Room 表示嵌套的@Relation?

android - 什么情况下 "Can' t 从 onDestroy 访问 ViewModels”以及如何优雅地解决它?

android - Worker 内部的 Synchronous 或 Asynchronous Rxjava(来自 WorkManager 组件)什么是正确的选择?

android - Workmanager 中唯一的 OneTimeWorkRequest

Android 12 APK 在安装时抛出无效包

android - 如何在 LG android 移动版 4.0 中运行我的 android 程序?

Android NDK & FFMPEG : findLibrary returned null

android - 内部使用 intent.getextras()

android - 如何在 WorkManager for Android 中创建一个带有参数的 Worker?