【发布时间】:2019-07-10 13:55:16
【问题描述】:
我有一个关于 URI 文件的数组,我使用 for 循环将它们上传到 firebase 存储。按照文档,我可以获得在UploadTask 对象上实现continueWithTask 和addOnCompleteListener 方法的下载url,所以我尝试将所有url 保存在一个数组中。我的问题是我用来保存 url 的数组是空的,但图像在代码计算后上传到 firestore Storage 文件夹可能是因为 continueWithTask 和 addOnCompleteListener 是异步方法。
我该如何解决?
for (int i = 0; i < photos.size(); i++) {
mStorage=FirebaseStorage.getInstance().getReference().child("images/" + j);
mUploadTask=mStorage.putFile(photos.get(i));
Task<Uri>urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
if(!task.isSuccessful()){
throw task.getException();
}
return mStorage.getDownloadUrl();
}
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
if(task.isSuccessful()){
String url = task.getResult().toString();
downloadUrl.add(url);
}
}
});
}
请求url后我的数组downloadUrl为空
【问题讨论】:
标签: android firebase google-cloud-firestore storage