我正在尝试从Firebase中获取数据,当它完成关闭活动时,Firebase仍可以在侦听器上运行,并且我尝试了removeEventListener,但是它不起作用,该怎么办?
childEventListener = mOnline.child("Room").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
String val = dataSnapshot.getValue(String.class);
opponentPlayers.add(val);
enterOpponentRoom();
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
这就是我尝试删除监听器的方法
@Override
protected void onStop() {
Log.d("onStop", "called");
mOnline.child("Room").removeEventListener(childEventListener);
super.onStop();
}
答案 0 :(得分:0)
使用数据库的最终路径(在这种情况下为mOnline.child(“ Room”))创建DatabaseReference变量。然后使用此引用添加侦听器,然后将其删除。当您尝试使用与添加侦听器相同的“子”方法删除侦听器时,会发生某些事情。