“removeEventListener”(android)是否关闭 Firebase 实时数据库连接?

Eco*_*dly 2 android firebase firebase-realtime-database

我浏览了所有文档和许多博客,但没有得到答案。

事情是,我同时必须将火力实时database.That手段100个同时连接的初始配额免费我的用户100可以使用应用程序,除非和直到用户不使用我的application.Afterdestroy的应用connection仍然开放对于该用户,同时没有其他用户可以访问。

所以我的问题是,如果我从数据库引用中删除监听器,这也会关闭connection吗?

 ValueEventListener listener = null;
 DatabaseRefference ref =FirebaseDatabase.getInstance().getRefference("user");
 listener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        ref.removeEventListener(listener); 
        //----Doing Stuffs
    }
 }
ref.addListenerForSingleValueEvent(listener);
Run Code Online (Sandbox Code Playgroud)

有了这个,我想要实现的是,当 User1 获得他/她的搜索结果时,他/她将不再持有 a connection,这样另一个用户就可以进入数据库。

Bob*_*der 6

Firebase 会自动管理连接。这在实时数据库指南中有解释:

在 Android 上,Firebase 会自动管理连接状态以减少带宽和电池使用量。如果客户端没有活动侦听器、没有挂起的写入或 onDisconnect 操作,并且没有通过 goOffline 方法明确断开连接,Firebase 会在 60 秒不活动后关闭连接。

另请注意,当添加了侦听器时,addListenerForSingleValueEvent()它会在onDataChange()运行后自动删除。您不需要removeEventListenter()像在发布的代码中所做的那样调用。这在文档中描述:

读取数据一次

在某些情况下,您可能希望回调被调用一次然后立即删除,例如在初始化您不希望更改的 UI 元素时。您可以使用 addListenerForSingleValueEvent() 方法来简化这种情况:它触发一次,然后不再触发。

您可以使用位于伪位置的侦听器检测连接状态的变化/.info/connected。请注意,这确实算作正常的“活动”侦听器,并且不会禁止自动断开连接处理。

获得连接状态管理可见性的另一种方法是使用FirebaseDatabase.getInstance().setLogLevel(Logger.Level.DEBUG)启用调试日志记录。