Jedes Fragment in meiner Anwendung hat seine eigenen kontinuierlichen Firebase-Listener. Diese werden unnötig, sobald sich das aktive Fragment geändert hat, die Zuhörer jedoch im Hintergrund weitermachen. Außerdem können diese alten Listener die Aktualisierung von "Views" für das vorherige Fragment auslösen, was die Anwendung zum Absturz bringen kann. Also, ich möchte sauber sein und die Zuhörer aufräumen, sobald sich das Fragment ändert. Ich weiß nicht wie, aber ich habe eine alternative Lösung und ich war neugierig auf deine Gedanken und Vorschläge.Entfernen von kontinuierlichen Firebase-Listenern bei Fragmentwechsel
Die Listener-Funktionen sind in den Fragmenten genannt onCreate
, zum Beispiel:
fuSetListener();
Diese Funktionen abrufen und die Daten in globalen Variablen speichern.
Im onDataChange
des Firebase Zuhörer führe ich diese if-Anweisung zu überprüfen, ob der Hörer entfernt werden sollte:
if(getActivity()==null){
reference.removeEventListener(this);
} else {
// Perform necessary onDataChange actions
}
So stellt sich die Frage, ist getActivity()
nur zurückkehren null
falls das Fragment hat sich geändert? Oder kann getActivity()
null
zurückgeben, ohne das Fragment zu ändern und meinen Fragments Zweck durcheinanderzubringen?
Ich habe diese Methode ein paar Mal angewendet und laufe noch nicht in Schwierigkeiten, aber ich wollte mit Ihnen vor dem Fortfahren überprüfen.