将Firebase Persistence Enabled设置为true后,不检索新数据?

问题描述 投票:1回答:1

制作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数据持久性以及实时更改。

android firebase firebase-realtime-database
1个回答
2
投票

如果您正在使用:

setPersistenceEnabled(true);

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

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

但是,当您没有连接到服务器时,没有办法停止从缓存中检索数据,因为当您连接到服务器时,您无法强制从缓存中检索数据,不幸的是这种行为不能改变了。

© www.soinside.com 2019 - 2024. All rights reserved.