【问题标题】:How to manage multiple uploads/downloads in firebase storage?如何管理 Firebase 存储中的多个上传/下载?
【发布时间】:2018-08-19 02:01:25
【问题描述】:
我目前正在从事具有某种文件上传/下载操作并使用 Firebase Storage 作为后端存储服务的项目。为了更好的用户体验,需要显示上传下载的状态,例如成功上传、上传失败和上传progress.but 问题在于管理多个文件的上传/下载。我试着像这样工作
List<UploadTask> uploadTasksList;
但这不能很好地管理操作。有没有其他方法可以正确管理下载/上传。
或者是否有一些我可以用来管理的图书馆。
请帮忙!
【问题讨论】:
标签:
java
android
firebase
firebase-storage
【解决方案1】:
看起来Task 类型的API 公开了一些方便的方法,用于将其他Tasks 的执行链接在一起:
continueWithTask(Continuation<TResult, Task<TContinuationResult>> continuation)
...甚至是其他一些任意逻辑:
continueWith(Continuation<TResult, TContinuationResult> continuation)
给定两个UploadTasks,前者的用法可能如下所示:
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 - 特别是关于错误处理的内容。
希望有帮助!