【发布时间】:2018-12-21 08:39:57
【问题描述】:
我正在尝试将自定义对象上传到 Firebase Firestore,但 Firestore 对象应包含下载图片网址。我必须这样做的想法是先上传图像等待它完成,获取对下载 url 的引用,更新我的自定义类,然后将其上传到 Firestore。然后,我想在最后一次上传(上传到 Firestore)完成时通知我的视图。我正在考虑通过返回一个任务来做到这一点。这是我上传图片的内容:
ref.putFile(file).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
ref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
//use uri to update object and then upload to firestore
mObject.setImageUri(uri)
uploadToFirestore(myObject);
}
Log.d(TAG, "onSuccess: uri= "+ uri.toString());
}
});
}
});`
我不确定如何返回 Firstore 上传的最终任务,因为它是在图像上传任务中完成的。我的目标是监听 uploadToFireStore() 何时完成,然后通知我的视图。任何建议,将不胜感激。谢谢!
编辑:我有这样的结构- View 已从用户那里获取信息,将其作为自定义对象传递给 viewmodel。然后视图模型调用 db 执行上传。 我的想法是将任务从 db 返回到 viewmodel,它将返回所述任务以查看。查看检查是否完成,然后停止加载程序。这是思考这个问题的好方法吗?
【问题讨论】:
标签: java android firebase google-cloud-firestore firebase-storage