Я пытаюсь получить некоторые данные, хранящиеся в Firebase, но добавленные мной слушатели не работают.Странно то, что иногда это работает, а иногда нет, с неизменным кодом.Это проблема Firebase, проблема с моим устройством или проблема с моим кодом?
Я попытался отладить приложение с точками останова внутри методов onDataChange () и onCancelled (), и они не были достигнуты,но метод AddedFestivalsListener () возвращает объект слушателя, и это не нуль.Также создается ссылка на Firebase, и слушатель добавляется корректно.
Структура базы данных выглядит как this .
private ValueEventListener addedFestivalsListener(){
ValueEventListener addedListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
allFestivals.clear();
for (DataSnapshot festSnapshot : dataSnapshot.getChildren()){
Festival f = festSnapshot.getValue(Festival.class);
allFestivals.add(f);
}
adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage());
}
};
return addedListener;
}
dRef = FirebaseDatabase.getInstance().getReference().child("festivals");
dRef.addValueEventListener(addedFestivalsListener());
Единственноея получил в Logcat сообщение, подобное этому: Подтверждение addFestivalsListener () заняло 106.237ms
Я добавил слушателя для проверки соединения с firebase и вывод выглядит так:
2019-05-30 17:12:44.023 30517-30517/? D/FestivalsFragment: onDataChange: not connected
2019-05-30 17:22:02.492 30517-30517/? D/FestivalsFragment: onDataChange: connected
2019-05-30 17:22:02.492 30517-30517/? D/FestivalsFragment: onDataChange: connected
2019-05-30 17:22:05.922 30517-30517/? D/FestivalsFragment: onDataChange: not connected
2019-05-30 17:22:05.923 30517-30517/? D/FestivalsFragment: onDataChange: not connected
2019-05-30 17:48:42.819 30517-30517/? D/FestivalsFragment: onDataChange: connected
2019-05-30 17:48:42.819 30517-30517/? D/FestivalsFragment: onDataChange: connected