【发布时间】:2019-04-20 12:02:48
【问题描述】:
我将 Firebase 用于我的 android 项目。
有一点我不明白。我正在使用一种方法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) {
}
});
【问题讨论】:
-
问题到底出在哪里?何时开启新活动?
-
问题是在加载活动时,
addChildEventListener被触发,并且我希望它仅在添加/删除/更改子项时触发 -
确保你把这个函数放在这些函数之外(onCreate, onStart, onResume....)
-
它的 onCreate。那么我应该把这个函数放在哪里呢?
-
好的,这取决于您的需要,但是当将任何代码放入这些函数(onCreate....等)时,这意味着该代码将在打开此活动时立即触发
标签: android firebase-realtime-database