java - 将监听器添加到不存在的值

标签 java android firebase firebase-realtime-database listener

我最近启动了使用 Firebase 实时数据库的 Android 应用,但出乎意料的是,由于 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)?

AB 之间有什么区别吗?还是 A 更好(如果下载量加起来没有达到 GB)

谷歌文档并没有告诉太多关于听众的信息。 在我的应用程序中经常添加监听器是否会导致下载量达到 GB 数? 另外,我可以对连接协议(protocol)和 SSL 加密做些什么吗?

最佳答案

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

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

关于java - 将监听器添加到不存在的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55434291/

相关文章:

android - 如何减少firebase中的数据库大小?

go - Firebase 自定义身份验证传递 token

java - 在PreparedStatement中得到错误的输出

java - 目标文件已存在,上传时无法删除

android - set.addAll(myArrayList) 不按相同顺序添加列表项

android - CSS 背景不会在普通的 Android 浏览器上重复?

java - 编译器提示 "missing return statement"即使不可能达到缺少 return 语句的条件

java - Java 中的 Flush PGP 加密 Bouncy CaSTLe 输出流

android - 取消发布应用程序可以使我的帐户遵守政策吗

javascript - 从 Firebase Vuex 中删除项目