0

我的 Android 应用程序中有一个聊天系统,使用 Firebase 实时数据库。我添加了使用 Firebase 存储将图像添加到消息的选项。问题是,在我刚刚上传了有关消息的数据后,仍然没有图像ValueEventListener,当图像仍未完全上传时,调用 a 并更新聊天中的消息。有什么方法可以告诉 Firebase 何时向所有听众发送更新?

这是我上传到 Firebase 的代码:

final DatabaseReference postsReference = databaseReference.child(DEBUG.getPostsPath());
        postsReference.child("NumberOfPosts").addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                int num = dataSnapshot.getValue(Integer.class)+1;

                DatabaseReference newPostReference = postsReference.child("PostNumber" + num);
                newPostReference.child("Username").setValue(firebaseAuth.getCurrentUser().getDisplayName());
                newPostReference.child("Post").setValue(post);

                DatabaseReference idRef = newPostReference.child("id");
                String key = idRef.push().getKey();
                idRef.setValue(key);

                if (imagePath != null) {
                    String id = getUniqueID();

                    FirebaseStorage storage = FirebaseStorage.getInstance();

                    StorageReference ref = storage.getReference();
                    StorageReference imageRef = ref.child(DEBUG.getPostsImagesPath() + "/" + id);

                    imageRef.putBytes(toByteArray(imagePath));
                    newPostReference.child("Image").setValue(id);
                }

                if (father != null) newPostReference.child("Father").setValue(father); //Set the ID of is father

                postsReference.child("NumberOfPosts").setValue(num);
            }

            @Override public void onCancelled(@NonNull DatabaseError databaseError) { }
        });

有什么功能可以做到这一点吗?

4

1 回答 1

1

在查询位置看到任何更改后,侦听器总是立即触发。没有办法告诉 SDK 延迟回调。您的代码可能应该先完成上传,然后再将任何内容写入数据库。

于 2019-09-03T18:08:13.890 回答