出于数据考虑,一种方法是先创建一个
HashMap,
ValueEventListeners然后在中创建,
onStop否则
onDestroy您将删除这些侦听器。
为了简单起见,您应该使用单个事件侦听器获取会议室。然后,您可以为每个房间创建一个实时侦听器。
public class MainActivity extends Activity { private Firebase mRef; private HashMap<Firebase, ValueEventListener> mListenerMap; @Override protected void onStart() { super.onStart(); mRef = new Firebase("https://<your-firebase-app>/myChatRooms/testUser"); mRef.addListenerForSinglevalueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) { ValueEventListener listener = new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { // do your thing here } @Override public void onCancelled(FirebaseError firebaseError) { } }; mListenerMap.put(postSnapshot.getRef(), listener); Firebase childRef = mRef.child("chatRoomMessageCount").child(postSnapshot.getKey()); childRef.addValueEventListener(listener); } } @Override public void onCancelled(FirebaseError firebaseError) { } }); } @Override protected void onStop() { super.onStop(); for (Map.Entry<Firebase, ValueEventListener> entry : mListenerMap.entrySet()) { Firebase ref = entry.getKey(); ValueEventListener listener = entry.getValue(); ref.removeEventListener(listener); } }}


