Chaque fragment de mon application possède son propre ensemble d'écouteurs Firebase continus. Ceux-ci deviennent inutiles une fois le fragment actif a changé, cependant, les auditeurs continuent en arrière-plan. En outre, ces anciens écouteurs peuvent déclencher des mises à jour de vue pour le fragment précédent, ce qui peut provoquer le blocage de l'application. Donc, je voudrais être bien rangé et nettoyer les auditeurs une fois que le fragment change. Je ne sais pas comment, mais j'ai une solution alternative et j'étais curieux de vos pensées et suggestions.Suppression d'écouteurs Firebase continus sur le changement de fragment
Les fonctions d'écoute sont appelés dans les fragments onCreate
, par exemple:
fuSetListener();
Ces fonctions extraient et enregistrer les données dans des variables globales.
Dans le onDataChange
de l'auditeur Firebase J'exécute cette instruction if pour vérifier si l'auditeur doit être retiré:
if(getActivity()==null){
reference.removeEventListener(this);
} else {
// Perform necessary onDataChange actions
}
La question se pose, ne getActivity()
que revenir null
dans le cas où le fragment a changé? Ou peut getActivity()
retourner null
sans changer le fragment et gâcher mon but Fragments?
J'ai appliqué cette méthode plusieurs fois et je n'ai pas encore eu de problème, mais je voulais vérifier avec vous avant de continuer.