将侦听器添加到不存在的值

Adding listener to a value which doesn't exist

我最近推出了我的 android 应用程序,它使用 Firebase 实时数据库,但出乎意料的是,由于在 Firebase 中下载的 GB 为 1 美元/GB,因此账单非常大。
我的应用程序现在处于暂停状态,我正在尝试尽快修复它。 我以前不在底部添加侦听器,而总是在导致此问题的根部添加。

一个

mDatabaseReference.child("Data").child(ID).child("Details").addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                       //Do Something
                    }
                    @Override
                    public void onCancelled(DatabaseError databaseError) {
                    }
                });

B

mDatabaseReference.child("Data").child(ID).addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        if(dataSnapshot.hasChild("Details")){
                        //Do Something
                        }
                    }
                    @Override
                    public void onCancelled(DatabaseError databaseError) {
                    }
                });

如果数据不存在,第一种方法不会报错,但我想知道它是否在数据库中搜索(总共下载了 GB)?

所以 AB 之间有什么区别还是 A 更好(如果下载量加起来不超过 GB)

google 文档并没有详细说明侦听器。 经常在我的应用程序中添加侦听器是否会增加 GB 的下载量? 还有关于连接协议和 SSL 加密我能做些什么吗?

暗示添加侦听器会导致从实时数据库下载数据(这是使用 SDK 从您的应用下载数据的唯一提供方式)。如果数据已缓存在客户端上,则响应所需的数据将更少。

A导致下载的整体数据比B少,因为A比B更具体。B会导致其下children全部下载。