【问题标题】:How to make sure that WorkManager cancels my Worker?如何确保 WorkManager 取消我的 Worker?
【发布时间】:2018-12-28 01:12:39
【问题描述】:

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

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

如果我有一个用例强制 Worker 在调用其中一种取消方法时被取消怎么办?

【问题讨论】:

    标签: android android-architecture-components android-workmanager


    【解决方案1】:

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

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

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

    【讨论】:

    • 非常感谢,我观看了视频,看来这是目前处理取消的最佳方法。
    猜你喜欢
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多