2016-08-05 14 views
0

FirebaseDatabase.getInstance以前の子を引き続き聴いています。私はuser1、user2とuser3を持っているとしましょう。私はuser1、user2、およびuser3の値を聞いています。私はlog1とuser1、それはuser1とuser2とuser2の値を聞いていると私はuser1とuser2の値を聞いていると、user1の値を聞いている。なぜfirebaseは以前の子供たちの声を聞き続けますか?私がuser1と初めてログインすると、user2とuser3の値を聞いています。FirebaseDatabase.getInstance()。getInstance()。getInstance()。getInstance().getInstance()。子(userID)の子をchaningした後も、それはまだ前の子を聴いています

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_logged_in); 

    databaseReference = FirebaseDatabase.getInstance().getReference().child(userID); 
    databaseReference.addChildEventListener(new ChildEventListener() { 
     @Override 
     public void onChildAdded(DataSnapshot dataSnapshot, String s) { 


     } 

     @Override 
     public void onChildChanged(DataSnapshot dataSnapshot, String s) { 
     Toast.makeText(this,dataSnapshot.getValue(String.class),Toast.LENGTH_LONG).show(); 


     } 

     @Override 
     public void onChildRemoved(DataSnapshot dataSnapshot) { 

     } 

     @Override 
     public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
    } 
+0

'ChildEventListener'は削除されるまで有効です([docs here](https://firebase.google.com/docs/database/android/retrieve-data#detach_listeners))。 'onDestroy()'のように、リスナーが不要になったときにリスナーを削除していますか? –

+0

うん、今は働いている。 – j22purikas

答えて

2

あなたは、あなたのdatabaseReferenceに追加しているChildEventListenerの参照を保持して、あなたの活動のonStop()方法に if (childEventListener != null) databaseReference.removeEventListener(childEventListener); を呼び出す必要があります。

関連する問題