我正在使用Firebase for Android作为我们应用的聊天组件。 我无法弄清楚如何在每条聊天消息上可靠地实现状态更新。 例如,当聊天与服务器同步时显示“发送...”,并在同步后显示成功反馈。
我有一个onChildAdded监听器,它将消息提供给我的适配器。但是,在本地添加每个节点时会立即触发此侦听器,并且我无法检查每个节点的状态
My Current解决方案是保留一组节点密钥,并在每次向Firebase推送内容时添加密钥。然后在setValue回调中,我从集合中删除节点密钥。但是,这是非常不可靠的,因为当调用活动被破坏等时节点可以同步。
我想知道是否有更简单的方法来检查每个节点是否已同步到服务器?
谢谢!
答案 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.");
}
}
});