如何在Android中停止Firebase事件监听器?

时间:2018-09-18 19:00:40

标签: android firebase firebase-realtime-database

我正在尝试从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();


}

1 个答案:

答案 0 :(得分:0)

使用数据库的最终路径(在这种情况下为mOnline.child(“ Room”))创建DatabaseReference变量。然后使用此引用添加侦听器,然后将其删除。当您尝试使用与添加侦听器相同的“子”方法删除侦听器时,会发生某些事情。