Добавление и удаление прослушивателей снимков в FirebaseUI-Android RecyclerView
FirebaseUI-Android предоставляет удобный способ заполнения RecyclerViews данными в реальном времени из Пожарный магазин. Однако важно понимать, как правильно добавлять и удалять прослушиватели снимков, чтобы избежать утечек ресурсов.
Добавление прослушивателя снимков
При использовании FirebaseRecyclerAdapter добавляется прослушиватель для каждый элемент в RecyclerView. В методе populateViewHolder вы можете использовать метод getRef(i) для получения DocumentReference для текущего элемента.
Чтобы прослушивать изменения ссылки, вы можете использовать метод addSnapshotListener(EventListener). Этот метод принимает EventListener в качестве аргумента, который будет вызываться при каждом изменении снимка ссылки.
Удаление прослушивателя снимков
Очень важно удалить прослушиватель когда он больше не нужен. Невыполнение этого требования приведет к утечке памяти. Вы можете удалить прослушиватель с помощью метода remove() объекта ListenerRegistration.
Реализация в методе populateViewHolder
Вот пример того, как добавлять и удалять снимок прослушиватель в методе populateViewHolder FirebaseRecyclerAdapter:
@Override protected void populateViewHolder(final ConvViewHolder convViewHolder, final Conv conv, int i) { final String list_user_id = getRef(i).getKey(); final DocumentReference docRef = db.collection("cities").document(list_user_id); ListenerRegistration listenerRegistration = null; if (listenerRegistration == null) { listenerRegistration = docRef.addSnapshotListener(new EventListener() { @Override public void onEvent(@Nullable DocumentSnapshot snapshot, @Nullable FirebaseFirestoreException e) { if (e != null) { Log.w(TAG, "Listen failed.", e); return; } if (snapshot != null && snapshot.exists()) { Log.d(TAG, "Current data: " snapshot.getData()); } else { Log.d(TAG, "Current data: null"); } } }); } }
В этом примере переменная ListenerRegistration инициализируется как нулевое значение. Затем внутри оператора if добавляется прослушиватель, если он еще не был добавлен.
Удаление прослушивателя в методах жизненного цикла активности
Чтобы удалить прослушиватель, когда активность больше не видна, вы можете переопределить метод onStop() в своей активности и вызвать метод Remove() в ListenerRegistration.
@Override protected void onStop() { super.onStop(); if (listenerRegistration != null) { listenerRegistration.remove(); } }
Выполняя эти шаги, вы можете быть уверены, что прослушиватели снимков добавляются и удаляются правильно, предотвращая утечку ресурсов и повышая производительность вашего приложения.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3