【问题标题】:Firebase multiple child listenersFirebase 多个子监听器
【发布时间】:2015-02-04 20:01:09
【问题描述】:

我们正在开发一个移动应用程序(目前是 Android 和 iOS),我们使用 Firebase 进行聊天和其他实时消息。

我们使用的结构是:

firebase-url/user-id/
                 contacts/child-element
                 activities/
                           joined/child-element
                           created/child-element
                 notifications/child-element

为了使我的应用数据保持更新,我执行了一个查询并将一个子侦听器附加到用户 ID 分支(联系人、已加入、已创建、通知)的每个第一级子级(或在活动的情况下为第二级)。功能方面,它运行良好,可以轻松保持一切最新,但今天进行了一个小时的用户测试,电池消耗非常大(对于一个用户来说,该应用使用了大约 26% 的电池,第二大使用量)并且总是GC 收集器经常运行,我的感觉是 firebase 连接可能是最大的用户。它是否正确?仅在 user-id 分支上有一个子侦听器会更好吗?

任何帮助将不胜感激。如果需要,我会发布一些 Android 代码。

PS:这是应用的 Android 版本。

【问题讨论】:

  • 我无法回答这个问题,因为我真的不确定。但根据我的研究,Firebase 监听器相对便宜。我会考虑将ChildEventListener 放在user-id 参考上并从那里测试您的使用情况。我想知道您对此有何发现,因为我目前正在开发一个主要由 firebase 驱动的应用程序。

标签: android firebase firebase-realtime-database


【解决方案1】:

[Firebase 工程师] 一般来说,Firebase 侦听器本身非常便宜。您可能会发现瓶颈在于通过网络传输的数据量。

在您上面描述的情况下,听起来您正在将侦听器附加到 /aa/ba/b/c,这不会导致重复数据通过网络传输,因为所有嵌套数据都已被/a 上的侦听器捕获。 Firebase 客户端很聪明,不会复制这些数据。

至于电池,有很多因素会造成影响,但请尝试分析快速变化的数据、缓慢变化的数据、更多写入、更少写入、更多/更少 UI 或 CPU 等之间的不同行为组合。这可能是多种因素的组合,但额外的调试将帮助您缩小罪魁祸首。

【讨论】:

  • 监听器数量和电池寿命有什么直接关系,忽略数据传输量?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多