多次在同一个ref上调用keepSynced的任何缺点?

时间:2017-04-14 19:01:10

标签: firebase firebase-realtime-database

由于我的应用程序的流量,每次用户打开应用程序时,我都被迫在同一个参考号上调用keepSynced(true)。我想知道这样做是不是很糟糕,或者Firebase是否忽略了同一参考中的任何冗余keepSynced()调用。

如果在您已调用keepSynced(true)的参考号的子参考号上调用keepSynced(true),那么这些也会被忽略吗?

我真的在寻找一个确定的答案。

4 个答案:

答案 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。