调用onChildAdded回调但没有添加任何内容

时间:2016-01-13 08:17:40

标签: android firebase

我有一个问题,就是没有理由调用onChildAdded(),当某些东西添加时它确实可以正常工作

这是听众:

    comment = new Firebase(MY_URL).child("Comments").child(channel);
    childEventListener = new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            if (dataSnapshot != null && dataSnapshot.getValue() != null) {
                        try {
                        comment = new ObjectMapper().writeValueAsString(commentObject);
                        System.out.println("onChildAdded"+comment +"    s"+s);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }catch (JsonProcessingException e) {
                        e.printStackTrace();
                    }
            }

        }
        //the other call backs
    };
    comment.addChildEventListener(childEventListener);

这是初始化代码,我添加了监听器:

@Override
    public void onResume() {
        super.onResume();
        setupFireBaseListener(channel);
    }

这是我删除了监听器:

 @Override
    public void onDetach() {
        super.onDetach();
        comment.removeEventListener(childEventListener);
    }

请注意我在Application类上调用此方法:

Firebase.setAndroidContext(this); 

这是我打印的数据:

onChildAdded{"name":"osama raddad","comment":"hi","user_id":"11"}    s-K7qX32GeNLEvY4IDtnn oldData
onChildAdded{"name":"osama raddad","comment":"how","user_id":"11"}    s-K7qX3UCI6vlcS5kfBdG oldData

我的firebase客户端sdk版本是2.2.1

1 个答案:

答案 0 :(得分:2)

onChildAdded并不只是在您连接后为每个添加的孩子启动,但它也会为每个现有孩子触发

以下内容来自Firebase文档。

  

...每个现有孩子的onChildAdded event is triggered once   每次将新子项添加到指定路径时再次使用。

如果您只想要新添加的项目,则需要在每个项目中加入时间戳,然后执行orderByChild("timestamp").start(currentTimestamp)查询。