WorkManager:如何获取ListenableWorker成功结果的outputData

时间:2019-11-15 21:07:31

标签: android android-workmanager

在我的网络层中,我以位图的形式获取图像列表,然后使用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。

0 个答案:

没有答案