6

我们正在开发一个移动应用程序(目前是 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版本。

4

1 回答 1

7

[Firebase 工程师] 一般来说,Firebase 监听器本身非常便宜。您可能开始看到瓶颈的地方是通过网络传输的数据量。

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

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

于 2015-02-05T20:17:23.843 回答