在我的网络层中,我以位图的形式获取图像列表,然后使用Palette API从这些图像中收集颜色信息。由于Palette API是异步工作的,因此我必须使用ListenableWorker
。一切工作正常:BitmapDownloadWorker
已构建并加入WorkManager
中。加载图像后,调色板API发挥了魔力,然后设置了ResolvableFuture
的结果:
private fun setFutureResult(fromColor: Int, toColor: Int, textColor: Int) {
val outputImageUuid = OUTPUT_IMAGE_UUID to imageUuid
val outputTextColor = OUTPUT_TEXT_COLOR to textColor
val result = workDataOf(
outputRepositoryUuid,
outputTextColor
)
future.set(Result.success(result))
}
这时,我想访问Worker的outputData,这是我想通过侦听器实现的:
workManager.getWorkInfosByTag(repository.uuid).addListener(
Runnable { onWorkDone(repository.uuid) },
MyThreadExecutor()
)
调用了onWorkDone
方法,但是我不明白如何访问outputData:
private fun onWorkDone(uuid: String) {
val workInfo = workManager.getWorkInfosByTag(uuid)
// this is always false!
if (workInfo.isDone) {
val outputData = workInfo.get()[0].outputData
}
}
如何访问ListenableWorker
的outputData?
我无法使用LiveData,因为我无法访问网络层中的LifecycleOwner。