由于我的应用程序的流量,每次用户打开应用程序时,我都被迫在同一个参考号上调用keepSynced(true)
。我想知道这样做是不是很糟糕,或者Firebase是否忽略了同一参考中的任何冗余keepSynced()
调用。
如果在您已调用keepSynced(true)
的参考号的子参考号上调用keepSynced(true)
,那么这些也会被忽略吗?
我真的在寻找一个确定的答案。
答案 0 :(得分:2)
keeySynced对于引用给出的路径是打开还是关闭。没有"多个keepSynced"状态 - 在SDK中实现将毫无意义,因为这样做没有任何优势。
答案 1 :(得分:2)
您只需拨打一次keepSynced(true)
即可。我实现它的方法是扩展Application
类。
public class GlobalApp extends Application {
@Override
public void onCreate() {
super.onCreate();
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
FirebaseDatabase.getInstance().getReference().keepSynced(true);
}
}
答案 2 :(得分:1)
在节点上调用{{1}}可确保Firebase数据库客户端在与数据库服务器建立连接时同步该节点。当没有这样的连接时,没有内置的API来保持节点同步。
答案 3 :(得分:0)
keepSynced(true);
如果我们启用离线支持,将非常有用
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
如果我们设置keepSynced(true),那么只要用户的互联网连接在线,它就会更新它的节点数据。可以在here
中阅读更多解释例如:如果其他用户删除该节点,则其他用户离线。如果我们没有设置keepSynced(true),则离线用户数据仍然存在。 在某些情况下,它会使力量接近。
所以我的结论是,要么我们不支持离线数据库, 或支持离线但使用keepSynced(true)。还有另一种选择,我们可以随时选择keepSynced true或false。