如何在android中删除ValueEventListener?

时间:2017-03-13 13:48:03

标签: android firebase firebase-realtime-database listener

我一直在使用firebase 2周。我需要你的帮助。

   public void closeReadRef() {
    if (readRef != null)
        readRef.removeEventListener(listener);
}

上面的代码必须删除我的监听器,但它无法正常工作。我在onPauseonDestroyonStop

中调用此方法
    @Override
public void onStart() {
    FirebaseUtility.getInstance().closeReadRef();
    super.onStart();
}

@Override
public void onPause() {
    super.onPause();
}

@Override
public void onResume() {
    super.onResume();
}

我做错了什么?为什么我不能取消听众? 谢谢。

修改

我在Activity中的onCreate()中调用以下方法。

 public void setReadTrueInFireBase(final String currentID, final String location) {
    instance.currentID = currentID;
    instance.location = location;
    readRef = FirebaseDatabase.getInstance().getReferenceFromUrl(Constant.FIREBASE_DATABASE_URL);
    readRef.child("conversations").child(location).addValueEventListener(listener);
}

2 个答案:

答案 0 :(得分:1)

试试这个:

DatabaseReference readRef;
ValueEventListener listener;

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    readRef = FirebaseDatabase.getInstance().getReferenceFromUrl(Constant.FIREBASE_DATABASE_URL);
    listener = readRef.child("conversations").child(location).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                /* ... */
            }

            @Override
            public void onCancelled(DatabaseError error) {
                /* .... */
            }
        });
 }

@Override
public void onStop() {
    if (readRef != null && listener != null) {
        readRef.removeEventListener(listener);
    }
}

答案 1 :(得分:0)

databaserefercence.removeEventListener(listener);

u需要将添加的侦听器保存在变量中