听取儿童更新

以一个用例为例,如聊天应用程序或协作购物清单应用程序(基本上需要跨用户同步的对象列表)。如果你使用 firebase 数据库并将值事件侦听器添加到聊天父节点或购物清单父节点,则每次添加聊天节点时,你将从头开始(我的意思是开始聊天)结束整个聊天结构(即任何人都说你好。我们不想这样做,我们感兴趣的只是新节点或仅删除或修改的旧节点,不应返回未更改的节点。

在这种情况下,我们可以使用 ChildEvenListener 。没有任何进一步的说明,这里是代码示例(请参阅示例 JSON 数据的上一节):

userDBRef.addChildEventListener(new ChildEventListener() {
    @Override
    public void onChildAdded(DataSnapshot dataSnapshot, String s) {
    }

    @Override
    public void onChildChanged(DataSnapshot dataSnapshot, String s) {
    }

    @Override
    public void onChildRemoved(DataSnapshot dataSnapshot) {
    }

    @Override
    public void onChildMoved(DataSnapshot dataSnapshot, String s) {
        //If not dealing with ordered data forget about this
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
    });

方法名称是自解释的。正如你所看到的那样,无论何时添加新用户或修改现有用户的某些属性或删除或删除用户,都会使用相关数据调用子事件侦听器的适当回调方法。因此,如果你为说聊天应用程序保持 UI 刷新,请将 onChildAdded() 中的 JSON 解析为 POJO 并将其放入你的 UI 中。只需记住在用户离开屏幕时删除你的监听器。

onChildChanged() 为整个子值提供已更改的属性(新属性)。

onChiledRemoved() 返回已删除的子节点。