作者:jack2502937407 | 来源:互联网 | 2023-05-23 14:26
我们正在开发一个移动应用程序(Android和iOS),我们正在使用Firebase进行聊天和其他实时消息.
我们使用的结构是:
firebase-url/user-id/
contacts/child-element
activities/
joined/child-element
created/child-element
notifications/child-element
为了保持我的应用程序数据更新,我执行查询并将子侦听器附加到user-id分支(联系人,已加入,创建,通知)的每个第一级子级(或活动的第二级).功能方面它完美地运行并且可以轻松地保持一切最新,但是今天进行了一小时的用户测试并且电池耗尽非常重(对于一个用户,应用程序使用大约26%的电池,第二大最常用)并始终GC收集器经常运行,我的感觉是firebase连接可能是最大的用户.它是否正确?可能最好只在user-id分支上拥有一个子监听器?
任何帮助,将不胜感激.如果需要,我会发布一些Android代码.
PS:这是针对该应用的Android版本.
1> Rob DiMarco..:
[Firebase工程师]一般来说,Firebase听众本身就很便宜.你可能会开始看到的瓶颈是通过网络传输的数据量.
在上面描述的情况下,听起来你正在将一个监听器附加到/a
,a/b
和a/b/c
,这不会导致重复数据通过线路,因为所有嵌套数据都已被监听器捕获/a
.Firebase客户端非常聪明,不会复制此数据.
至于电池,有很多因素需要贡献,但尝试分析快速变化的数据,缓慢变化的数据,更多的写入,更少的写入,更多/更少的UI或CPU等之间的行为的不同组合.可能有些因素的组合,但额外的调试将帮助您缩小罪魁祸首.
听众人数和电池寿命之间是否有任何直接关系,忽略了数据传输量?