gpt4 book ai didi

java - 添加图像时不会调用 Firebase 存储 onSuccess

转载 作者:行者123 更新时间:2023-12-02 11:53:31 27 4
gpt4 key购买 nike

我正在尝试使用以下结构将数据保存到 firebase

root
--clothing
----clothingImgDownloadUrl
------title
------category

据我了解,我需要引用数据库中要保存新数据的路径。

FirebaseApp app = FirebaseApp.getInstance();
assert app != null;
mDatabase = FirebaseDatabase.getInstance(app);
mClothingRef = mDatabase.getReference("clothing");

我想使用上面创建的服装引用添加新服装

mClothingRef.child(clothingImgDownloadUrl).setValue(clothing);

但是,只有在将服装图像上传到 Firebase 存储并且其下载网址返回到应用程序后,上面的代码才会运行,在应用程序中它可以用作 Firebase 数据库中条目的唯一标识符。以下是将图像上传到 Firebase 存储的代码。

FirebaseStorage storage = FirebaseStorage.getInstance();
StorageReference storageRef = storage.getReference(FIREBASE_STORAGE_CLOTHING_REFERENCE);
StorageReference photoRef = storageRef.child(mSelectedImageUri.getLastPathSegment());
photoRef.putFile(mSelectedImageUri)
.addOnSuccessListener(this, new OnSuccessListener<UploadTask.TaskSnapshot>() {
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// When the image has successfully uploaded, we get its download URL
Log.d("ADMIN_ACTIVITY", "Called");
Uri downloadUrl = taskSnapshot.getDownloadUrl();
assert downloadUrl != null;
String imageUrl = downloadUrl.toString();
Clothing clothing = new Clothing(imageUrl, title, mCategory);
mClothingRepository.addClothing(clothing);
}
});

当应用程序运行并且我从应用程序的管理部分添加服装项目时,图像确实被添加到 firebase 存储中,但是最后一个代码 fragment 中的 Log 调用未被调用。当然,如果添加了图像,则应调用 onSuccess 监听器,然后应运行 addClothing 方法。

为什么 onSuccess 监听器没有被调用,我是否正确保存到实时数据库?

最佳答案

您正在使用 Activity 范围形式 addOnSuccessListener() 。该文档指出:

The listener will be automatically removed during onStop()

监听器未被调用的最可能的解释是作为第一个参数 (this) 传递的 Activity 已完成并且调用了其 onStop() 方法。要确认情况确实如此,请删除 this 参数并查看是否调用了监听器。

关于java - 添加图像时不会调用 Firebase 存储 onSuccess,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47738294/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com