как FirebaseRecyclerAdapter получает данные из базы данных в реальном времени? что он использует addValueEventListener или addListenerForSingleValueEvent …?

#android #firebase #firebase-realtime-database #android-recyclerview

#Android #firebase #firebase-realtime-database #android-recyclerview

Вопрос:

Я использую FirebaseRecyclerAdapter для получения данных из базы данных firebase, но в разных макетах я использую addValueEventListener и addListenerForSingleValueEvent, и я знаю, что addValueEventListener следует удалять после выхода из макета (в onDestroy()). итак, мой вопрос в том, как остановить прослушиватель из FirebaseRecyclerAdapter после того, как я покину макет этот FirebaseRecyclerAdapter в ..??

Ответ №1:

Если вы используете адаптер из Firebase-UI, вы можете запретить ему прослушивать изменения, вызвав adapter.stopListening() , как правило, onStop метод вашей активности.

Если вы подключаете своих собственных слушателей с помощью addValueEventListener или addChildEventListener , вам действительно нужно удалить их, как только они больше не понадобятся. Для этого вам нужно отслеживать добавленных вами слушателей, а затем вызывать removeEventListener запрос или ссылку..

Итак, если вы добавили прослушиватель с:

 ValueEventListener listener = new ValueEventListener() {
   ...
});
ref.addValueEventListener(listener);
  

Затем вы можете удалить его (например, в onStop ) с помощью:

 remove.removeEventListener(listener);
  

Обратите внимание, что слушатели, добавленные с помощью addListenerForSingleValueEvent , автоматически удаляются после получения первого значения из базы данных, поэтому обычно вам не нужно удалять их в своем коде.

Комментарии:

1. Я нахожу это решение Хорошим решением для удаления прослушивателя при завершении активности

2. Это зависит от вашего варианта использования. Большинство вариантов использования должны удалять прослушиватели при приостановке действия, но некоторые не должны. Если вы не знаете, какой из них требуется для вашего варианта использования, вы, скорее всего, находитесь в группе «большинство» и должны удалить слушателей.

3. на большинство моих вопросов, прежде чем я их задам, я нашел ваши ответы во всех StackOverflow на самом деле ты мой супер герой, и я также надолго запомнил твое имя Большое тебе спасибо за твою помощь