gpt4 book ai didi

android - 如何使用 android CoroutineWorkers 将数据从失败的子 worker 传递给链中的最后一个 worker

转载 作者:行者123 更新时间:2023-12-05 00:02:20 24 4
gpt4 key购买 nike

我当前的 android 应用程序使用链式 worker 来执行复杂的后台任务。
我只观察链中的最后一个 worker 来检测整个链是否成功完成。到目前为止,这种方法一直是可以接受的,因为我有一个新要求,我还需要在工作人员失败时传递数据。
是我开始观察链中所有 worker 的唯一选择吗?
或者
是否可以在失败的子工作人员中设置输出数据并从观察链中最后一个工作人员获得的工作信息访问它?
例如,如果我有一个由 5 个连续工作人员组成的链,如下所示:-

WorkerA
WorkerB
WorkerC
WorkerD
WorkerZ
我只是观察 WorkerZ , 和 WorkerC失败并在其结果中设置 outputData,有什么方法可以通过仅观察来访问 WorkData WorkerZ ?

最佳答案

没有必要观察所有的 worker 。如果您使用 Result.failure 返回数据在每个工作人员中,您可以轻松找到哪个工作人员失败以及它的输出数据是什么,如下所示:

 WorkManager.getInstance(context)
.getWorkInfosForUniqueWorkLiveData(UNIQUE_WORK_NAME)
.observeForever { workInfos ->
if(it.state == WorkInfo.State.FAILED){ //failed worker
val failureResult = it.outputData
}
}
或像这样:
val failureResult = WorkManager.getInstance(context)
.getWorkInfosForUniqueWork(UNIQUE_WORK_NAME)
.get()
.firstOrNull{
it.state == WorkInfo.State.FAILED
}
?.outputData

关于android - 如何使用 android CoroutineWorkers 将数据从失败的子 worker 传递给链中的最后一个 worker ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70158590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com