我想在我的onPause方法中如下所示離開活動時刪除我的ChildEventListener觀察者。基本上我的問題是,當我離開活動並返回到它時,我的childListener得到一個增量,這取決於我離開活動並返回它的次數,我的System.out.println將打印到控制檯「onChildAdded」和「onChildRemoved」多次,我只希望它被調用一次。如何當我離開活動結束我的聽衆任何幫助,謝謝提前:)android firebase stop ChildEventListener
// Connect to DB
private DatabaseReference mDataBase;
private FirebaseAuth mAuth = FirebaseAuth.getInstance();
String currentUser_UID = mAuth.getCurrentUser().getUid();
ChildEventListener childListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
mDataBase = FirebaseDatabase.getInstance().getReference();
childListener = mDataBase.child("Users").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
String savedCardUser = (String) dataSnapshot.child("Card").getValue();
System.out.println("onChildAdded");
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
System.out.println("onChildRemoved");
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
@Override
protected void onPause() {
super.onPause();
mDataBase.removeEventListener(childListener);
}
編輯
如果它不是簡單的事情:)不得不添加子( )路徑現在工作完美。成功刪除我的聽衆
mDataBase.child("Card").removeEventListener(childListener);
你的問題的問題不是要阻止任何事情。這是爲了防止它從以前的實例恢復...爲什麼你需要這個? –
因爲當onChildRemoved被觸發時,我正在從我的數組列表中刪除一個元素,並且因爲它被多次調用,所以它從我的數組列表中刪除多於1個項目,然後崩潰,因爲它正在尋找刪除的索引不存在:) –
問題中沒有Arraylist。請顯示實際問題的[mcve] –