当前位置: 首页 > 知识库问答 >
问题:

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

左丘阳晖
2023-03-14

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

问题是我有100个同时连接到Firebase实时数据库的初始免费配额。这意味着一次我的100个用户可以使用我的应用程序。使用应用程序后,除非用户不销毁应用程序,否则连接仍然对该用户开放,因此同时没有其他用户可以访问。

所以我的问题是,如果我从数据库参考中删除侦听器,这也会关闭连接吗?

 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);

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

共有1个答案

佟阳飙
2023-03-14

Firebase自动管理连接。《实时数据库指南》对此进行了解释:

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

另请注意,当使用addListenerForSingleValueEvent()添加侦听器时,它会在onDataChange()运行后自动删除。您不需要像在发布的代码中那样调用远程事件列表()。这在留档中描述:

读取数据一次

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

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

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

 类似资料:
  • 我们正在构建一个聊天应用程序,一对一聊天是该应用程序的主要目的,所以目前,消息传递速度是我们的第一要务。我们需要一个后端解决方案,我们最初计划使用Firebase实时数据库。但后来Firestore出现了,从那以后,我们看到了Firebase团队对实时数据库Firestore的许多建议。 我们已经使用了实时数据库和Firestore,所以我们非常了解两者的功能和查询能力。对于我们的用例,就特性而言

  • 我在一个Android应用程序中使用Firebase数据库,每次用户启动时,我都会在数据库中存储一些值,为此我会执行以下操作: 正如您在子方法中看到的,如果称为“usrId”,它将创建usrId目录,并在其中添加所有neccesary信息。但是我想为每个用户创建目录,所以我尝试传递usrId变量作为参数。但它不起作用。当我调试代码时,调试器说本地var usrId无法识别,我的问题是如何在Fire

  • 问题内容: 我有些困惑,我从阅读以下内容 你不需要关闭conn连接吗?如果conn.close()没有发生,那实际上是怎么回事? 我有一个正在维护的私有Web应用程序,该应用程序当前无法关闭任何一种形式,但是重要的应用程序真的是stmt,conn还是两者兼而有之? 该站点间歇性地关闭,但是服务器一直在说这是数据库连接问题,我怀疑它没有关闭,但是我不知道该关闭哪个。 问题答案: 使用完之后,你需要通

  • 下载url来自一个单独的图像选择方法,顺便说一句。我的用户创建代码是这样的。

  • 问题内容: 在Go中,当使用SQL数据库时,是否需要在关闭应用程序之前关闭DB()?数据库是否会自动检测到连接已终止? 问题答案: DB将尽其所能进行检测,但是如果没有运气,它可能无法检测到。最好尽快发布所获得的东西。 系统调用将等待TCP连接发送数据,但客户端不会收到任何信息。 发生电源故障,网络问题或裸机退出而没有正确释放资源。TCP keepalive机制将启动,并尝试检测连接已死。 客户端

  • 问题内容: 通过Node MongoDB本机驱动程序使用Nodejs和MongoDB。需要检索一些文档,并进行修改,然后将其保存回来。这是一个例子: 具有异步性质,如果更新文档的过程花费更长的时间,则当光标到达文档末尾时,数据库连接将关闭。并非所有更新都保存到数据库。 如果省略,则所有文档均正确更新,但应用程序挂起,永不退出。 我看到一则帖子建议使用计数器跟踪更新次数,当回落到零时,然后关闭数据库