android - 如何观察链式工作人员的 Android 工作人员进度
问题描述
我当前的 Android 应用程序为其后台进程使用了 Workers。
api "androidx.work:work-runtime:2.4.0"
api "androidx.work:work-runtime-ktx:2.4.0"
我将多个工人链接在一起,并希望报告每个工人的进度
我有一个问题,我只能从每个工作人员那里得到一个进度更新
当每个工人两次发布进度如下:-
覆盖挂起乐趣 doWork(): 结果 = coroutineScope { val startTime: Long = System.nanoTime()
val progressName = "$PROGRESS_PRE_PIX$workerName"
withContext(Dispatchers.IO) {
try {
setProgressAsync(workDataOf(progressName to 0))
doActualWork()
} finally {
setProgressAsync(workDataOf(progressName to 100))
}
}
}
我永远观察到来自我的链式工作人员的 workInfos 继续,如下所示:-
workContinuation.workInfosLiveData.observeForever { workInfos ->
workInfos.forEach { workInfo ->
Timber.e("xoox - $workInfo")
}
}
我配置了详细的工作人员日志记录,每个工作人员都生成这些日志条目
2021-01-26 13:30:15.956 D/WM-WorkProgressUpdater: Updating progress for c9ef0d9a-f253-4403-944d-b9afb1a043ef (Data {PROGRESS-MyWorker : 0, })
2021-01-26 13:30:16.151 D/WM-WorkProgressUpdater: Updating progress for c9ef0d9a-f253-4403-944d-b9afb1a043ef (Data {PROGRESS-MyWorker : 100, })
但是我的观察者只注销了 1 个条目
xoox - WorkInfo{mId='70251d4e-882d-4ab8-946f-20cfba2d767a', mState=RUNNING, mOutputData=Data {}, mTags=[com.mendeley.refmanager.background.work.worker.GroupWorker], mProgress=Data {PROGRESS-MyWorker : 0, }}
我究竟做错了什么?
为什么我看不到setProgressAsync(workDataOf(progressName to 100))
日志?
解决方案
推荐阅读
- mysql - MySQL 社区服务器 8.0.16 - django.db.utils.OperationalError: (1045, "Access denied for user (using password: YES)")
- android - 在缓存中发现损坏的 IndexBlock 31322。与 /.gradle/caches/journal-1/file-access.bin 相关
- user-interface - 在哪里可以找到 HTML 选择小部件的规范?
- c++ - 如何避免创建空对象?
- angular - 角度路由器按需销毁路由的存储组件
- hyperlink - 在 Kentico 报告中创建链接
- objective-c - Objective-C 字符串中是否有占位符说明符?
- unity3d - 导入统一 2Dgame 套件显示一些错误
- java - Android 批量插入或忽略 JSONArray
- r - Plotly 代码 - 查看器图表不显示