2016-12-07 2 views
1

У меня возникла проблема с базой данных Firebase Realtime в моем приложении для Android.ValueEventListener инициировал onDataChange метод только один раз

Я пытаюсь обновить список в режиме реального времени. Но обновление работает только при запуске приложения. Он не обновляется автоматически. Таким образом, мне нужно перезапустить приложение, когда требуется обновление.

Есть ли недостающая часть? Я ценю любую помощь. Спасибо

Проблема: Слушатель запускается onDataChange метод только в перезагрузке приложения. Данные верны. Но после этого слушатель не работает.

Код:

mRef = FirebaseDatabase.getInstance().getReference(); 
mPostRef = mRef.child(DbUtils.POST_CHILD); 
mPostRef.keepSynced(true); 

mPostRef.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     List<Post> objList = new ArrayList<>(); 
     for(DataSnapshot objSnapShot: dataSnapshot.getChildren()){ 
      Post obj = objSnapShot.getValue(Post.class); 
      obj.setKey(objSnapShot.getKey()); 
      objList.add(obj); 
     } 
     mAdapter.addAllAndNotify(objList); 

    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     Log.i("Posts", "Listener was canceled"); 
    } 
}); 
+1

Вы уверены, что данные изменяются? Попробуйте использовать консоль Firebase для изменения данных. Я запускал ваш код с версией 10.0.1, а onDataChange() срабатывает при изменении данных. –

+0

Я изменил данные в консоли. Код не работает. Обновляется ли ваша информация при каждом изменении? (Я использую 9.8.0, попробую с 10.0.1). Спасибо за вашу помощь. –

+0

Добавьте инструкцию 'Log' в' onDataChange() ', чтобы увидеть, когда срабатывает обратный вызов. –

ответ

1

Наконец, я нашел ошибку.

Дело в том, что Firebase не поддерживает несколько соединений. Итак, я удалил все остальные DatabaseReference из своей деятельности. И это работает сейчас.

Спасибо людям, которые пытались мне помочь.

Смежные вопросы