【发布时间】:2015-11-18 09:29:33
【问题描述】:
我有一个给定用户在一个位置的聊天室列表,以及给定聊天室在另一个位置的消息总数。我想跟踪用户所属聊天室中的一些消息。
我有以下sn-p:
//getting all chat rooms this user belongs to
mFirebase.child("myChatRooms").child("testUser").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded (DataSnapshot dataSnapshot, String previousKey){
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
ChatRoom myRoom = postSnapshot.getValue(ChatRoom.class);
//listening to message count in every chat room user belongs to
mFirebase.child("chatRoomMessageCount").child(postSnapshot.getKey()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//number of messages have changed
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
}
}
//......
}
问题是,我以后如何删除所有那些 ValueEventListener,什么时候会调用 onChildRemoved,或者我不再需要它们?
处理这种情况的推荐方法是什么?我应该将子键和侦听器存储在 HashMap 中并自己跟踪它们,还是有某种方法可以删除给定 firebase 位置的所有侦听器?
【问题讨论】: