Agregar y eliminar oyentes de instantáneas en FirebaseUI-Android RecyclerView
FirebaseUI-Android proporciona una manera conveniente de completar RecyclerViews con datos en tiempo real de Tienda de fuego. Sin embargo, es importante comprender cómo agregar y eliminar detectores de instantáneas correctamente para evitar fugas de recursos.
Agregar un detector de instantáneas
Al usar FirebaseRecyclerAdapter, se agrega un detector para cada elemento en RecyclerView. En el método populateViewHolder, puede usar el método getRef(i) para recuperar la DocumentReference del elemento actual.
Para escuchar los cambios en la referencia, puede usar el método addSnapshotListener(EventListener). Este método toma un EventListener como argumento, que se llamará cada vez que cambie la instantánea de la referencia.
Eliminar un oyente de instantáneas
Es crucial eliminar el oyente cuando ya no es necesario. De lo contrario, se producirá una pérdida de memoria. Puede eliminar el oyente utilizando el método remove() en el objeto ListenerRegistration.
Implementación en el método populateViewHolder
Aquí se muestra un ejemplo de cómo agregar y eliminar una instantánea oyente en el método populateViewHolder de 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"); } } }); } }
En este ejemplo, la variable listenerRegistration se inicializa como nula. Luego, dentro de la declaración if, se agrega el oyente si aún no se ha agregado.
Eliminar el oyente en los métodos del ciclo de vida de la actividad
Para eliminar el oyente cuando la actividad ya no es visible, puede anular el método onStop() en su actividad y llamar al método remove() en el listenerRegistration.
@Override protected void onStop() { super.onStop(); if (listenerRegistration != null) { listenerRegistration.remove(); } }
Al seguir estos pasos, puede asegurarse de que los oyentes de instantáneas se agreguen y eliminen correctamente, evitando fugas de recursos y mejorando el rendimiento de su aplicación.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3