首页 > 解决方案 > WorkManager 为 Result.success() 调用 onStopped()

问题描述

当我做对了,onStopped()应该被调用,当Worker已经异常停止/被取消时。不是当它的工作正确完成时。这个对吗?

https://developer.android.com/reference/androidx/work/ListenableWorker#onstopped

当此 Worker 被告知停止时,将调用此方法。这可能是由于用户的明确取消信号或系统已决定抢占任务而发生的。在这些情况下,WorkManager 将忽略工作的结果。

就我而言,情况恰恰相反:

doWork()with Result.success()then返回时onStopped() 调用,而在返回Result.failure()时则不调用。

当调用WorkManager.getInstance().cancelWorkById(id) onStopped() 也被调用时(虽然这似乎是正确的)。


我正在使用2.0.0-rc01.androidx.work:work-runtime-ktx

当工人“正常完成”和“异常停止”时,是否有(可靠的)方法来获得通知?

我认为后一种情况将onStopped()发挥作用。这可能是一个错误吗?

标签: androidandroid-workmanager

解决方案


我有同样的。请查看此问题以获取更多详细信息。该问题已在2.3.0-alpha02中修复。当我更新版本时,它工作正常。

implementation "androidx.work:work-runtime:2.3.0-alpha02"

推荐阅读