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

时间:2019-03-30 18:06:31

标签: java android firebase firebase-realtime-database listener

我最近启动了我的Android应用,该应用使用Firebase实时数据库,但出乎意料的是,这笔账单非常庞大,因为在Firebase中下载的GB是$ 1 / GB。
我的应用目前处于暂停状态,我正在尝试尽快对其进行修复。 我以前通常不在底部添加侦听器,而总是在导致此问题的根目录添加。

A

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)?

A B 之间有什么区别,或者是更好的(如果未总计GB的下载量)

Google文档对侦听器的介绍不多。 经常在我的应用程序中添加侦听器是否总计可下载的GB? 关于连接协议和SSL加密,我还能做些什么吗?

1 个答案:

答案 0 :(得分:0)

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

A导致要下载的总体数据少于B,因为A比B更具针对性。B会导致其下的所有子项都被下载。