У меня есть два проекта firebase в моем приложении android, которые я установил в классе Application, все работает правильно. Я вызываю addValueEventListener при запуске фрагмента и также вызываю removeEventListener
при уничтожении фрагмента, но мой слушатель не останавливает никаких изменений в БД, которые он сам вызовет. Тот же объект слушателя, который я удалил, и addValueEventListener
не вызывать никуда.
Вот мой класс приложения
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;
}
}
Вот моя вызывающая функция
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
имеет тот же объект слушателя, который я назначаю из addValueEventListener
объекта слушателя. Вот мой код, пожалуйста, помогите мне
TAG: onDataChange: Presenter$2@e4afd4f
TAG: onDestroy: Presenter$2@e4afd4f
TAG: onDataChange: Presenter$2@e4afd4f