FirebaseDatabase.getInstance().setPersistenceEnabled(true);
据我了解,Firebase客户端将保留应用最近收听的所有数据的本地副本(在磁盘上)。
这是我的firebase节点
/users/userhash/privateTalk/messages/
示例案例
/users/user01-hash/privateTalk/messages/push-hash/hello
/users/user01-hash/privateTalk/messages/push-hash/hi
/users/user01-hash/privateTalk/messages/push-hash/hey
我正在使用AddChildEventListener
FirebaseDB.instance().ChatDB.Child("users").Child("user01-hash").Child("privateTalk").Child("messages").AddChildEventListener(m_privateTalkListener);
在磁盘上“hi”,“hello”,“hey”
服务器“hi”,“hello”,“hey”,“new msg 01”,“new msg 02”
我想知道我的App Oncreate,Firebase是否只是从服务器下载“new msg 01”,“new msg 02”
答案 0 :(得分:0)
Firebase Persistence会在磁盘缓存上创建,以便您可以在应用程序关闭或脱机时继续使用Firebase。所以说你添加了一条消息,“离线消息”,但无法连接到互联网? Firebase会将写入操作和新消息存储在其本地缓存中。 Firebase也会将该本地引用视为对函数有效。因此,如果您有一个“添加孩子”的事件监听器,那么当孩子被添加到本地副本时,它仍然会触发。当您的设备重新建立与数据库的连接时,它将生成所有存储的事务并更新存储的值。如果用户在数据库同步之前关闭应用程序,则会发生同样的情况:它将保留更改并在下次应用程序打开和连接时进行更新。