即使没有添加孩子,也会触发 firebase onChildAdded

时间:2021-05-08 00:59:11

标签: java firebase firebase-realtime-database

根据 firebase 文档:

onChildAdded(DataSnapshot snapshot, String previousChildName) 当一个新的孩子被添加到这个监听器被添加到的位置时,这个方法被触发。

但是根据我在 Logcat 中收到的输出(通过我的方法 logresult() ),即使我没有添加孩子,我也可以得出结论 onChildAdded 被触发。它在我的节点“捕获”中为每个孩子触发

她是我的代码

    private void startMonitoring(){
    paused=false;
    resetgraph();

    now = System.currentTimeMillis()/1000;
    starting = System.currentTimeMillis()/1000;
    starting = starting - starting%3600;

    //logresult(new Date(starting*1000).toString()+" "+new Date((starting+3600)*1000).toString());

    select_part(starting,starting+3600);
    if(listener!=null){
        captures.removeEventListener(listener);
    }

    listener = new ChildEventListener() {
        @Override
        public void onChildAdded(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {

            long timex = snapshot.child("date_captured").getValue(Long.class);
            starting = timex - (timex % 3600);
            logresult(new Date(starting*1000).toString()+" "+new Date((starting+3600)*1000).toString());

            if ((timex%3600>1)&&(!paused)){
                addentries(timex, snapshot.child("node1").getValue(dataTemplate.class));
            }else if(!paused){
                resetgraph();
                select_part(starting,starting+3600);
            }

            if(paused){
                captures.removeEventListener(this);
            }
        }

        @Override
        public void onChildChanged(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {

        }

        @Override
        public void onChildRemoved(@NonNull DataSnapshot snapshot) {

        }

        @Override
        public void onChildMoved(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {

        }

        @Override
        public void onCancelled(@NonNull DatabaseError error) {

        }
    };

    captures.addChildEventListener(listener);
   }

那么我在代码中遗漏了什么或做错了什么? 我还仔细检查了我是否将孩子添加到我的捕获节点,但没有

1 个答案:

答案 0 :(得分:0)

onChildAdded 在您添加侦听器时为每个子节点触发,只有在添加其他子节点时才会触发。所以你看到的是预期的行为。

另请参阅 listening for child events 上的文档,其中介绍了 onChildAdded

<块引用>

检索项目列表或监听项目列表的添加。 此回调为每个现有子项触发一次,然后在每次将新子项添加到指定路径时再次触发。传递给侦听器的 DataSnapshot 包含新孩子的数据。

相关问题