android - 将 Firebase Persistence Enabled 设置为 true 后无法检索新数据?

标签 android firebase firebase-realtime-database

在进行FirebaseDatabase.getInstance().setPersistenceEnabled(true);查询获取数据时

Query  query = FirebaseDatabase.getInstance()
                      .getReference()
                      .child("notifications")
                      .child("entities")
                      .child(FirebaseAuth.getInstance().getCurrentUser().getUid().toString())
                      .orderByChild("seen")
                      .equalTo(0); 

来自data tree

它提供缓存中的旧数据,而不是 Firebase 数据库中新更改的数据。但是当我将 setPersistenceEnabled(true) 更改为 setPersistenceEnabled(false) 时,一切都会发生很好 虽然我也希望 Firebase 数据能够持久保存在缓存中,并在对 Firebase 数据库进行更改时进行更改。请帮助维护 Firebase 数据持久性以及实时改变。

最佳答案

如果您正在使用:

setPersistenceEnabled(true);

这意味着即使您处于离线状态,您也可以查询数据库。发生这种情况是因为 Firebase 创建了数据库的本地副本,该副本将在您的应用/设备重新启动后保留。当您离线时所做的每项更改都将在您重新上线后在 Firebase 服务器上更新。更清楚地说,每个使用 Firebase 数据库并使用 setPersistenceEnabled(true) 的客户端都会维护自己的内部(本地)数据库版本。当数据更新时,首先将其写入此本地版本的数据库。

因此,通过启用持久性,Firebase 实时数据库客户端在线时同步的任何数据都会持久保存到磁盘,并且可以离线使用,即使用户或操作系统重新启动应用也是如此。这意味着您的应用将通过使用缓存中存储的本地数据像在线一样运行。

但是,当您未连接到服务器时,无法停止从缓存中检索数据,因为当您连接到服务器时,您无法强制从缓存中检索数据,不幸的是此行为无法更改。

关于android - 将 Firebase Persistence Enabled 设置为 true 后无法检索新数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50149787/

相关文章:

javascript - 具有对外部 api 的基本身份验证的获取请求的 Firebase 云功能

Firebase 和 Google OAuth 同意屏幕

javascript - 为什么在 createUserWithEmailAndPassword 之后获取 uid 时 Firebase 返回未定义

javascript - 在 JS 中将 Firebase 添加到 Chrome 扩展时出错

firebase - 在没有服务器端代码的情况下在 Firebase 中搜索

android - Firebase 数据库快照返回 null

android - "java.lang.SecurityException: Permission Denial: starting Intent"在 Android 上发送电子邮件

android - Dagger 2 - 无法注入(inject)对象

Android 单元测试 - 如何在与应用程序相同的项目中运行测试?

android - 示例 1 未就绪 - Android 2.1 中的 Soundpool