Firebase 离线功能

我该怎么用?磁盘持久性还是 keepSynced 调用?

根据我的经验,我可以说它总是取决于你的应用程序的工作方式,以及你如何管理应用程序的事务和数据库。例如,如果你的应用程序中用户只是在编写和读取数据,但他无法删除或编辑数据,那么使用 DiskPersistence 将是正确的选择。

此外,DiskPersistence 会将数据存储在缓存中,这意味着你的应用将在用户的设备中使用更多空间,这可能不是你的最佳选择。

另一方面,如果你的应用程序管理了大量复杂的事务并且你的数据经常更新,那么你可能应该避免使用 DiskPersistence 并在要保持新鲜的引用中使用 keepSynced

为什么?

DiskPersistence 存储在本地检索的数据,如果你不将它与连续的 ListenerValueEvents 一起使用,有时会导致大量的去同步显示你的数据。例如:

  1. 用户 A 在你的应用上写入 Hello World 消息,该消息已收到用户 B 的接收
  2. 用户 B 在手机中下载来自用户 A 的消息并看到消息 Hello World
  3. 用户 A 编辑他的消息“Firebase 很酷”。
  4. 用户 B 仍然会观看 Hello World 消息,即使他更新了数据,因为当 Firebase 过滤时,快照参考是相同的。

为了避免这种情况,最好的办法是将连续的监听器保留在你想要跟踪的引用中。

我可以一起使用吗?

当然,你可以,并且在大多数应用程序中可能最好避免下载大量数据,并且即使用户没有连接也可以让用户使用你的应用程序。

如果你不关心在用户设备中使用缓存空间,我建议你在 FirebaseDatabase 对象中启用 diskPersistence,并在每个参考中添加 keepSync 标记,这些标记可能在很短的时间内有很多次,或者你想保留新鲜的。