Firebase多个子监听器

时间:2015-02-04 20:01:10

标签: android firebase firebase-realtime-database

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

1 个答案:

答案 0 :(得分:6)

[Firebase工程师]一般来说,Firebase听众本身就很便宜。你可能会开始看到瓶颈与通过网络传输的数据量有关。

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

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