如何在Workmanager Android中处理异步操作?

时间:2019-07-29 07:05:50

标签: android android-workmanager

我正在使用workmanager将图像文件上传到服务器,并希望将上传的图像路径传递给下一个工作程序,但是Result.success(output)在上传功能完成之前被调用。

class UploadImageWorker(context: Context, workerParameters: WorkerParameters) : RxWorker(context, workerParameters) {


override fun createWork(): Single<Result> {
        return Single.fromCallable {
         //UploadImageFile()
         //updating output 
       }.map{
         Result.success(output)
         }
     }
    }

2 个答案:

答案 0 :(得分:0)

在这种情况下,成功仅报告作业已成功触发,而不是对作业本身的衡量。

您应该只使用工人来完成工作并执行以下操作:

MyFactory.ImageFactory.UploadImageFile(file)

然后在ImageFactory内部使用Observer模式或类似的方式来订阅UploadImageFile的状态。这将是成功的真正衡量标准。

答案 1 :(得分:0)

您应该使用RxWorker。您可以返回Single<Result>。阅读RxWorker的文档以了解更多信息。

https://developer.android.com/reference/androidx/work/RxWorker