У меня есть список чатов для данного пользователя в одном месте и общее количество сообщений для данного чата в другом месте. Я хочу отслеживать количество сообщений в чате, к которым принадлежит пользователь.
У меня есть следующий фрагмент:
//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?