I have two firebase project in my android application which I set in Application class all works properly. I call addValueEventListener on fragment start and I also call removeEventListener
on fragment destroy but, my listener not stop any changes on db it will call itself. Same listener object I removing, andaddValueEventListener
not call from anywhere.
Here is my application class
public class MyApplication extends Application {
private static MyApplication myApplication;
private SharedPreferenceManager sharedPreferenceManager;
private DatabaseReference reference;
public static MyApplication getMyApplication() {
return myApplication;
}
@Override
public void onCreate() {
super.onCreate();
myApplication = this;
FirebaseOptions options = new FirebaseOptions.Builder()
.setApplicationId(getString(R.string.firebaseApplicationId))
.setApiKey(getString(R.string.firebaseApiKey))
.setDatabaseUrl(getString(R.string.firebaseDatabaseUrl))
.setGcmSenderId(getString(R.string.firebaseGCMDefaultSenderId))
.setProjectId(getString(R.string.firebaseProjectId))
.setGaTrackingId(getString(R.string.firebaseCrashReporting))
.setStorageBucket(getString(R.string.firebaseStorageBucket))
.build();
FirebaseApp currentApp = FirebaseApp.initializeApp(this, options, "secondary");
FirebaseDatabase.getInstance(currentApp).setPersistenceEnabled(true);
reference = FirebaseDatabase.getInstance(currentApp).getReference().child("schedules");
reference.keepSynced(true);
}
public DatabaseReference getFirebaseReference() {
return reference;
}
}
Here is my calling function
public void getData(){
final Query query = MyApplication.getMyApplication().getFirebaseReference().child(userId).child(year).child(month);
listener = query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Log.d("TAG", "onDataChange: "+ listener);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
@Override
public void onDestroy() {
view = null;
if (listener != null) {
Log.d("TAG", "onDestroy: "+ listener);
MyApplication.getMyApplication().getFirebaseReference().removeEventListener(listener);
}
}
removeEventListener
have same listener object which I assign from addValueEventListener
listener object. Here is my code please help me
TAG: onDataChange: Presenter$2@e4afd4f
TAG: onDestroy: Presenter$2@e4afd4f
TAG: onDataChange: Presenter$2@e4afd4f