我想在我的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] –