【问题标题】:Adding listener to a value which doesn't exist将侦听器添加到不存在的值
【发布时间】:2019-08-21 09:21:32
【问题描述】:

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

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? 关于连接协议和 SSL 加密还有什么我可以做的吗?

【问题讨论】:

  • Firebase 对于使用大量数据的小型应用来说可能会很昂贵。我会寻找更便宜的替代品。

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


【解决方案1】:

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

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

【讨论】:

  • 我预计会花费少量成本来获得没有数据的响应。
  • 一般来说,如果您有结算问题,您应该直接联系 Firebase 支持。 firebase.google.com/support/contact
猜你喜欢
  • 2013-02-17
  • 2011-09-28
  • 1970-01-01
  • 2023-03-27
  • 2022-10-20
  • 2016-08-21
  • 1970-01-01
  • 2015-08-23
  • 1970-01-01
相关资源
最近更新 更多