2016-04-01 6 views
2

In Android verwenden, wenn eine Aktivität zerstört wird, sollte ich entfernen Sie alle Zuhörerbeste Weg, um Speicher-Lecks zu verhindern, wenn Firebase

ref.addAuthStateListener(listener); 
ref.addListenerForSingleValueEvent(listener); 
ref.addChildEventListener(listener); 
ref.addValueEventListener(listener); 

mit ref.removeEventListener(listener) oder sie werden automatisch zerstört werden?

Ich weiß, dass für FirebaseRecyclerAdapter wir cleanup() verwenden können, um die Aufgabe zu erledigen. Außer Listenern und Adaptern gibt es noch andere Objekte, die wir bereinigen müssen?

Antwort

5

Firebase-Listener werden nicht automatisch entfernt. Sie müssen sie tatsächlich entfernen, indem Sie removeEventListener() aufrufen, genau wie Sie sie hinzufügen.

Ob Sie Listener in onDestroy() entfernen, hängt wirklich davon ab, wo Sie sie hinzufügen. Normalerweise entferne ich sie, wenn das Gegenteil von dem ist, wo ich sie hinzufüge. Also, wenn ich in onCreate() dann hinzufügen, entferne ich dann (oder rufen Sie cleanup() in onDestroy(). Ähnliche für onStart()/onStop() und onPause()/onResume().

+0

wie etwa addListenerForSingleValueEvent? – Aizen

+1

, die automatisch entfernt wird **, sobald es ** ausgelöst wird. Wenn es wird nicht ausgelöst (dh wenn Sie offline sind) sollten Sie es immer noch entfernen.Ein weiterer Grund, sie nicht zu benutzen, soweit es mich betrifft. :-) –

+0

@FrankvanPuffelen schlagen Sie vor, dass die Verwendung von addListenerForSingleValueEvent keine gute Praxis ist ? Wie du gesagt hast, hat es einige Probleme verursacht, als ich offline war. –

Verwandte Themen