java - 将侦听器添加到不存在的值
问题描述
我最近启动了我的 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)?
那么A和B之间有什么区别还是A更好(如果它不加起来下载GB)
谷歌文档并没有太多关于听众的信息。经常在我的应用程序中添加监听器是否会增加下载 GB?关于连接协议和 SSL 加密,我还能做些什么吗?
解决方案
这意味着添加侦听器将导致从实时数据库下载数据(这是可以使用 SDK 从您的应用程序下载数据的唯一方法)。如果数据已经缓存在客户端,则响应所需的数据将更少。
A 导致下载的整体数据少于 B,因为 A 比 B 更具体。B 将导致其下的所有子项都被下载。
推荐阅读
- html - 在 Wordpress 上定位图像的问题
- python - Django:如何在单个视图中添加多个基于类的表单?
- c++ - Clang AST 匹配器:如何匹配 lambda 捕获的变量?
- html - 在 HTML 文档中嵌入 SVG 过滤器
- keras - 如何重置 keras/tensorflow 2.0 中的所有图形和变量?
- javascript - 我想在加载文档后隐藏一些东西并显示另一个
- java - 如何将数据从 HTML 发送到数据库(通过 thymeleaf 更新引用的对象)?
- python - 从python中的列表中查找包的最大次要版本
- javascript - 如何使用 React Router 嵌套一些路由?我想保留一个标题组件
- javascript - 如果任何元素为真,如何迭代任何数组以返回值“真”