gpt4 book ai didi

android - 火力基地 : What is the difference between setPersistenceEnabled and keepSynced?

转载 作者:IT老高 更新时间:2023-10-28 22:25:58 24 4
gpt4 key购买 nike

我以为我使用以下所有数据进行聊天对话的整个时间都可以随时离线使用。不知何故,所有节点都是从服务器加载的。

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

那么,根据 DOCS :

Persistence Behavior : By enabling persistence, any data that we sync while online will be persisted to disk and available offline, even when we restart the app. This means our app will work as it would online using the local data stored in the cache.

如果数据在 setPersistenceEnabled(true); 时已经可以离线使用,我为什么需要 keepSynced(true)

DatabaseReference r = FirebaseDatabase.getInstance().getReference("chat/roomid");
r.keepSynced(true);

最佳答案

您应用中的 Firebase 数据库客户端可以将数据库中的数据保存在两个位置:内存和/或磁盘。

  1. 当您附加一个监听器时,它会将数据库中的数据同步到您应用中的内存表示。
  2. 如果您启用了持久性,数据会自动保存在磁盘上。
  3. 当您从某个位置分离最后一个监听器时,该位置的数据会从内存中刷新。但它并没有从磁盘中删除。

当您保持位置同步时,客户端实质上会将一个空监听器附加到该位置。因此,应用程序中的数据将始终与服务器上数据库中的数据保持同步(只要有网络连接)。如果您没有启用持久性,则数据只会在内存中保持最新。如果您启用了持久性,它也会在磁盘上保持最新。

虽然使用带有持久性的 keepSynced 是最常见的,但也有没有持久性的用例。

例如,如果您有一个主从应用程序,您经常从项目名称列表跳转到每个项目的详细信息。在这种情况下,保持项目名称列表同步将使您不必在用户从详细信息屏幕返回时重新加载该数据。

您当然也可以简单地在数据上保留一个监听器,这基本上就是 keepSynced 在幕后所做的事情。

关于android - 火力基地 : What is the difference between setPersistenceEnabled and keepSynced?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40190234/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com