Reputation: 612
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
Reputation: 168
databaserefercence.removeEventListener(listener);
u need to save the added listener in a variable
Upvotes: 0
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