2016-11-05 1 views
0

Während ich the example lesen, bemerkte ich, dass der Autor Runnable task in MyActivity erstellt. Wenn ich die Aktivität schließe, ist das System nicht in der Lage, sie zu vergeuden, weil das ausführbare Programm einen impliziten Verweis auf MyActivity enthält, richtig? Die Aktivität wird solange aktiv sein, wie das ausführbare Programm funktioniert.Ein anonymer Runnable verhindert Android von Müll-Sammeln der Aktivität, in der es definiert ist

Bitte korrigieren Sie mich, wenn ich falsch liege.

+1

so machen Sie Ihre' Runnable 'static: Es wird keine implizite Referenz auf Ihre Aktivität geben – pskink

Antwort

1

Scheint korrekt.

Von Ihrem Link (obwohl reden über AsyncTask, nicht anonym Runnable):

wenn es eine innere Klasse Ihrer Aktivität ist/Fragment, hält es einen impliziten Verweis darauf, die schlechte Praxis ist, weil Aktivität/Fragment kann bei Konfigurationsänderungen zerstört werden, aber sie bleiben im Speicher erhalten, während der Arbeitsthread lebt. wenn es als Standalone oder statische innere Klasse deklariert ist und Sie Verweis auf einen Kontext verwenden Ansichten zu aktualisieren, sollten Sie immer prüfen, ob es null ist oder nicht "

+0

BTW, danke für den Link Ich lese gerade, es ist sehr gut. – Fabricio

Verwandte Themen