我最近启动了使用 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)?
A 和 B 之间有什么区别吗?还是 A 更好(如果下载量加起来没有达到 GB)
谷歌文档并没有告诉太多关于听众的信息。 在我的应用程序中经常添加监听器是否会导致下载量达到 GB 数? 另外,我可以对连接协议(protocol)和 SSL 加密做些什么吗?
最佳答案
这意味着添加监听器将导致从实时数据库下载数据(这是使用 SDK 从应用程序下载数据的唯一提供方式)。如果数据已缓存在客户端,则响应所需的数据将减少。
A 导致下载的总体数据少于 B,因为 A 比 B 更具体。B 会导致下载其下的所有子项。
关于java - 将监听器添加到不存在的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55434291/