Olcay Sönmez
Olcay Sönmez

Reputation: 612

How do I remove ValueEventListener in android?

I have been working with firebase for 2 weeks. Please I need your help.

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

That code above has to remove my listener but it is not working. I call this method in onPause, onDestroy, onStop:

    @Override
public void onStart() {
    FirebaseUtility.getInstance().closeReadRef();
    super.onStart();
}

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

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

What am I doing wrong ? Why can I not cancel the listener? Thank you.

EDIT

I call this below method in onCreate() inside an Activity.

 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);
}

Upvotes: 1

Views: 6472

Answers (2)

Apurba A
Apurba A

Reputation: 168

databaserefercence.removeEventListener(listener);

u need to save the added listener in a variable

Upvotes: 0

Incinerator
Incinerator

Reputation: 2817

Try this:

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);
    }
}

Upvotes: 6

Related Questions