首页 > 解决方案 > 将侦听器添加到不存在的值

问题描述

我最近启动了我的 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) {
                    }
                });

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)

谷歌文档并没有太多关于听众的信息。经常在我的应用程序中添加监听器是否会增加下载 GB?关于连接协议和 SSL 加密,我还能做些什么吗?

标签: javaandroidfirebasefirebase-realtime-databaselistener

解决方案


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

A 导致下载的整体数据少于 B,因为 A 比 B 更具体。B 将导致其下的所有子项都被下载。


推荐阅读