我目前正在从事具有某种文件上传/下载操作并使用Firebase Storage作为后端存储服务的项目。为了获得更好的UX,要求显示上传下载的状态,例如成功上传,上传失败和上传进度。但是问题在于管理多个文件的上载/下载。我试图像
List<UploadTask> uploadTasksList;
但这在管理操作方面效果不佳。是否还有其他方法可以正确地管理下载/上传。 还是有一些我可以用来管理的库。 请帮忙!
答案 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-特别是关于错误处理。
希望有帮助!