在进行FirebaseDatabase.getInstance().setPersistenceEnabled(true);
查询获取数据时
Query query = FirebaseDatabase.getInstance()
.getReference()
.child("notifications")
.child("entities")
.child(FirebaseAuth.getInstance().getCurrentUser().getUid().toString())
.orderByChild("seen")
.equalTo(0);
它提供缓存中的旧数据,而不是 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/