【发布时间】:2017-12-08 11:41:59
【问题描述】:
我正在试用 Firebase 实时数据库。我创建了一个节点users,其中我创建了一个节点user_1。 JSON 如下所示
{
"user_1" : {
"firstName" : "User",
"lastName" : "Last",
"middleName" : "S"
}
}
我已为该特定节点 user_1 启用离线持久性和同步。
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
FirebaseDatabase.getInstance().getReference().child("users").child("user_1").keepSynced(true);
首先,我打开应用程序并同步user_1 数据。然后我杀死了应用程序,但设备仍然连接到互联网。我对 Firebase 控制台中的 user_1 节点进行了更改。一段时间后,我已断开与互联网的连接。我再次打开应用程序,听那个节点user_1。但离线数据不会与 Firebase Server 的最新数据同步。这是否意味着,keepSynced() 仅在应用程序处于前台时才有效?
【问题讨论】:
-
是的,因为 FirebaseDatabase.getInstance() 已映射到您的应用程序类,并且当您终止应用程序时,firebase 不会收到任何回调。请转至此link
-
你在哪里移除监听器?
-
我正在删除应用程序中的监听器,但是从文档中,我理解的是,如果我们使用 keepSynced(true),那么数据应该在没有任何监听器的情况下同步
-
@AlexMamo
keepSynced(true)实质上在引用/查询上设置了一个空侦听器。你通常不会删除它。 -
@FrankvanPuffelen 我明白了,因为它是空的,不需要删除。谢谢!
标签: android firebase firebase-realtime-database