Firebase Android - 如何判断节点是否已同步

时间:2015-09-22 19:15:19

标签: android firebase

我正在使用Firebase for Android作为我们应用的聊天组件。 我无法弄清楚如何在每条聊天消息上可靠地实现状态更新。 例如,当聊天与服务器同步时显示“发送...”,并在同步后显示成功反馈。

我有一个onChildAdded监听器,它将消息提供给我的适配器。但是,在本地添加每个节点时会立即触发此侦听器,并且我无法检查每个节点的状态

My Current解决方案是保留一组节点密钥,并在每次向Firebase推送内容时添加密钥。然后在setValue回调中,我从集合中删除节点密钥。但是,这是非常不可靠的,因为当调用活动被破坏等时节点可以同步。

我想知道是否有更简单的方法来检查每个节点是否已同步到服务器?

谢谢!

1 个答案:

答案 0 :(得分:6)

来自Firebase documentation on writing data

  

如果您想知道您的数据何时提交,您可以添加完成侦听器。 setValue()和updateChildren()都将获取一个可选的完成侦听器,该侦听器在写入已提交到数据库时被调用。

使用这个方便的代码示例:

ref.setValue("I'm writing data", new Firebase.CompletionListener() {
    @Override
    public void onComplete(FirebaseError firebaseError, Firebase firebase) {
        if (firebaseError != null) {
            System.out.println("Data could not be saved. " + firebaseError.getMessage());
        } else {
            System.out.println("Data saved successfully.");
        }
    }
});