【问题标题】:What is the difference between setPersistenceEnabled and keepSynced on Firebase? [duplicate]Firebase 上的 setPersistenceEnabled 和 keepSynced 有什么区别? [复制]
【发布时间】:2019-07-27 15:52:34
【问题描述】:

我刚刚意识到,只需一行代码,我就可以使用我的应用程序在线和离线访问 Firebase 数据库 (learned here)。

我正在开发一个应用程序,作为 MVP 和 Firebase 研究,我正在使用这两种方法来授予离线访问权限:

FirebaseDatabase database = FirebaseDatabase.getInstance();
database.setPersistenceEnabled(true);

DatabaseReference reference = getFirebaseDatabaseInstance().getReference();
reference.keepSynced(true);

所以,我的问题是:

这两种方法都用对吗?还是我应该只使用 setPersistenceEnabled(true)

我注意到,如果我使用 keepSynced(true),我的应用会避免在每次更改为另一个 Activity/Fragment 时加载。

【问题讨论】:

    标签: java android firebase firebase-realtime-database


    【解决方案1】:

    setPersistenceEnabled(true)keepSynced(true) 做两件不同的事情。

    setPersistenceEnabled(true) 开启查询结果的磁盘缓存。只要有可能,将使用缓存的结果,而不是再次从服务器获取它们。

    keepSynced(true) 与将侦听器添加到同一位置而不是删除它完全相同。因此,只要该位置有可用的更新,SDK 就会下载它们并调用对该数据感兴趣的任何其他侦听器。

    您是否应该使用它们中的任何一个取决于您是否想要它们声明的用途。它们的功能不重叠,除了如果两者都启用,keepSynced 位置的任何更新也会缓存在磁盘上,当您将它们的功能相加时,这是合乎逻辑的。

    【讨论】:

    • keepSynced 是否会使用大量资源,因为它可以有效地为数据库中的所有用户监听某些内容?
    猜你喜欢
    • 2017-03-04
    • 2015-11-23
    • 2013-02-13
    • 2011-04-26
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多