在明确删除之前,SingleValueEvent 侦听器是不是计入 Firebase RealTime DB 中的“同时连接”?
Posted
技术标签:
【中文标题】在明确删除之前,SingleValueEvent 侦听器是不是计入 Firebase RealTime DB 中的“同时连接”?【英文标题】:Do SingleValueEvent listeners count towards 'simultaneous connections' in Firebase RealTime DB until explicitly removed?在明确删除之前,SingleValueEvent 侦听器是否计入 Firebase RealTime DB 中的“同时连接”? 【发布时间】:2018-12-21 16:59:32 【问题描述】:根据 Firebase 文档,通过 addListenerForSingleValueEvent() 添加的侦听器会在返回包含子节点的所有数据后触发,该数据包含在添加它的引用处,然后不会再次触发。现在,将任何侦听器附加到引用,Db 连接都被计为正在使用中。
一旦单值监听器触发, 与其他子事件侦听器或值事件侦听器不同,它会自动释放数据库连接吗? 或者 除非明确删除,否则它是否会继续被视为同时连接限制下的数据库连接?
【问题讨论】:
【参考方案1】:监听单个事件与添加普通监听器完全相同。 SDK 只是在第一次触发后删除该侦听器。
移除最后一个监听器并不一定会立即“释放”连接。作为优化,连接会持续一段时间,然后由于缺少侦听器而断开。
【讨论】:
感谢弗兰克和道格的快速回答。因此推断不需要使用 removeEventListener() 显式分离此侦听器,或者最好在 onDestroy() 中显式删除此侦听器,以防活动在事件触发之前被销毁? 这与连接管理完全不同。当您不再需要它们时,您应该删除所有侦听器。它不知道活动的范围,因此如果您在活动消失时将其保持打开状态,它仍然可能在尝试引用不再存在的内容时触发并导致崩溃。 谢谢道格知道了。因此,就我而言,由于我仅在同一活动中使用单值事件侦听器返回的数据,因此最好在 onDestroy() 中删除侦听器以避免此类崩溃。 这是一种方法。每个人可能对何时添加和删除有不同的要求。以上是关于在明确删除之前,SingleValueEvent 侦听器是不是计入 Firebase RealTime DB 中的“同时连接”?的主要内容,如果未能解决你的问题,请参考以下文章