如何管理Firebase存储中的多个上传/下载?

时间:2018-08-19 02:01:26

标签: java android firebase firebase-storage

我目前正在从事具有某种文件上传/下载操作并使用Firebase Storage作为后端存储服务的项目。为了获得更好的UX,要求显示上传下载的状态,例如成功上传,上传失败和上传进度。但是问题在于管理多个文件的上载/下载。我试图像

List<UploadTask> uploadTasksList;

但这在管理操作方面效果不佳。是否还有其他方法可以正确地管理下载/上传。 还是有一些我可以用来管理的库。 请帮忙!

1 个答案:

答案 0 :(得分:0)

看起来Task类型的API公开了一些方便的方法,可将其他Task s的执行链接在一起:

  • continueWithTask(Continuation<TResult, Task<TContinuationResult>> continuation)

...甚至其他任意逻辑:

  • continueWith(Continuation<TResult, TContinuationResult> continuation)

给定两个UploadTask,前者的用法可能类似于:

final UploadTask task1 = storageReference1.putBytes(bytes1);
final UploadTask task2 = storageReference2.putBytes(bytes2);

task1.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<UploadTask.TaskSnapshot>>() {
    @Override
    public Task<UploadTask.TaskSnapshot> then(@NonNull Task<UploadTask.TaskSnapshot> task) {
        return task2;
    }
});

...或更简洁地使用lambda语法:

final UploadTask task1 = storageReference1.putBytes(bytes1);
final UploadTask task2 = storageReference2.putBytes(bytes2);

task1.continueWithTask(task -> task2);

如果您走这条路,那么值得花时间阅读Continuation类型的docs-特别是关于错误处理。

希望有帮助!