我想知道将firebase离线功能用作“免费”缓存是否合理。
让我们假设我在活动A中,我从firebase获取一些数据,然后我转移到活动B,它需要相同的数据。如果应用程序配置了setPersistenceEnabled(true),如果需要,还配置了keepSynced(true),我可以只重新查询活动B中的相同数据,而不是传递它吗?
据我所知,这两种方法在内存读取和磁盘读取(firebase脱机缓存)方面存在差异。但是,我是否真的通过使用firebase脱机来摆脱所有网络开销?
相关链接:
Firebase Offline Capabilities and addListenerForSingleValueEvent
https://groups.google.com/forum/#!msg/firebase-talk/ptTtEyBDKls/XbNKD_K8CQAJ
答案 0 :(得分:9)
是的,您可以轻松地在每个活动中重新查询Firebase数据库,而不是传递数据。如果启用磁盘持久性,则这将是本地读取操作。但是,由于您附加了一个监听器(或通过{{1}}保持连接),它将导致网络流量。
但请勿将Firebase用作仅限脱机的数据库。它实际上被设计为一个在线数据库,可以在短时间到中间的断开连接期间工作。离线时,它将保持写操作的队列。随着此队列的增长,本地操作和应用程序启动将变慢。没什么大不了的,但随着时间的推移,这些可能会加起来。