Adição e remoção de ouvintes de instantâneo no FirebaseUI-Android RecyclerView
O FirebaseUI-Android fornece uma maneira conveniente de preencher RecyclerViews com dados em tempo real de Armazém de fogo. No entanto, é importante entender como adicionar e remover ouvintes de instantâneo corretamente para evitar vazamentos de recursos.
Adicionando um ouvinte de instantâneo
Ao usar o FirebaseRecyclerAdapter, um ouvinte é adicionado para cada item no RecyclerView. No método populateViewHolder, você pode usar o método getRef(i) para recuperar o DocumentReference para o item atual.
Para ouvir alterações na referência, você pode usar o método addSnapshotListener(EventListener). Este método usa um EventListener como argumento, que será chamado sempre que o instantâneo da referência for alterado.
Removendo um ouvinte de instantâneo
É crucial remover o ouvinte quando não for mais necessário. Não fazer isso resultará em vazamento de memória. Você pode remover o ouvinte usando o método remove() no objeto ListenerRegistration.
Implementação no método populateViewHolder
Aqui está um exemplo de como adicionar e remover um instantâneo ouvinte no método populateViewHolder de um 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"); } } }); } }
Neste exemplo, a variável listenerRegistration é inicializada como nula. Então, dentro da instrução if, o ouvinte é adicionado se ainda não tiver sido adicionado.
Removendo o ouvinte nos métodos do ciclo de vida da atividade
Para remover o ouvinte quando a atividade não estiver mais visível, você pode substituir o método onStop() em sua atividade e chamar o método remove() em listenerRegistration.
@Override protected void onStop() { super.onStop(); if (listenerRegistration != null) { listenerRegistration.remove(); } }
Seguindo essas etapas, você pode garantir que os ouvintes de snapshot sejam adicionados e removidos corretamente, evitando vazamentos de recursos e melhorando o desempenho do seu aplicativo.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3