Android - Firebase addChildEventListener触发器[重复]

一身转战三千里,一剑曾当百万师。这篇文章主要讲述Android - Firebase addChildEventListener触发器[重复]相关的知识,希望能为你提供帮助。
这个问题在这里已有答案:

  • Firebase child_added only get child added 5个答案
我正在为我的android项目使用Firebase。有一些我不明白的东西。我正在使用方法addChildEventListener,并且我知道这个方法应该在添加/删除/更改新子项时触发...由于某些原因当我的Activity加载时,此方法会触发。添加新孩子时不需要触发......?

refToVideos.getReference(Params.VIDEOS).child(currentUser.getUid()).addChildEventListener(new ChildEventListener() { @Override public void onChildAdded(DataSnapshot snapshot, String s) { long countComments= (long)snapshot.child(Params.COUNTCOMMENTS).getValue(); int countComment = ((int) countComments); String frameURL= (String)snapshot.child(Params.FRAMEURL).getValue(); String genre= (String)snapshot.child(Params.GENRE).getValue(); long like= (long)snapshot.child(Params.LIKES).getValue(); int likes = ((int)like); String uploadDate= (String)snapshot.child(Params.UPLOADDATE).getValue(); String userProfile= (String)snapshot.child(Params.USERPROFILE).getValue(); String userUID= (String)snapshot.child(Params.USERUID).getValue(); String userName= (String)snapshot.child(Params.USERNAME).getValue(); String videoID= (String)snapshot.child(Params.VIDEOID).getValue(); String videoName= (String)snapshot.child(Params.VIDEONAME).getValue(); String videoURL= (String)snapshot.child(Params.VIDEOURL).getValue(); long view= (long)snapshot.child(Params.VIEWS).getValue(); int views = ((int)view); Video video = new Video(videoID,userUID,genre,videoName,videoURL,frameURL,userName,userProfile,likes, views,countComment,uploadDate); videosList.add(video); if(adapter != null) adapter.notifyDataSetChanged(); }@Override public void onChildChanged(DataSnapshot dataSnapshot, String s) {}@Override public void onChildRemoved(DataSnapshot dataSnapshot) {}@Override public void onChildMoved(DataSnapshot dataSnapshot, String s) {}@Override public void onCancelled(DatabaseError databaseError) {} });

答案来自documentation for onChildAdded
对于每个现有子项,将触发此回调一次,然后每次将新子项添加到指定路径时再次触发此回调。
因此,当您附加一个监听器时,它会立即为其侦听的位置中的任何现有子级调用其onChildAdded方法。这就是API的定义方式,您无法对其进行更改。
如果您只想了解在附加监听器之后添加的新子项,则必须在子节点中添加类似时间戳的内容,以确定它们是否为“新”。
【Android - Firebase addChildEventListener触发器[重复]】另请参阅以前有关该主题的以下问题:
  • Firebase child_added only get child added
  • How to only get new data without existing data from a Firebase?
  • Firebase: Get New Child Added

    推荐阅读