Android: Beenden der Looper?
Habe ich einen thread nutze ich, um in regelmäßigen Abständen die Daten aktualisieren, die in meiner Tätigkeit. Ich erstelle den thread und starten Sie einen Greifer für die Verwendung eines handlers mit postDelay()
. In onDestroy() für meine Tätigkeit, ich nenne removeCallbacks() auf meinem handler.
Sollte ich dann anrufen handler.getLooper().quit()
? Oder keine sorgen und lass das OS damit umgehen? Oder würde es laufen, nur dann für immer in die CPU-Zyklen zu verbrauchen?
InformationsquelleAutor der Frage stormin986 | 2010-05-08
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entsprechend der Android-Dokumentation sollten Sie Anruf beenden().
Beim Aufruf
Looper.loop()
eine while-Schleife gestartet wird. AufrufLooper.quit()
bewirkt, dass die Schleife zu beenden. Der garbage collector kann nicht sammeln Sie Ihre Objekt, während die Schleife ausgeführt wird.Hier sind die relevanten Abschnitt aus Looper.java:
InformationsquelleAutor der Antwort Jonathan
Ich jetzt nicht die korrekte Antwort, aber die Beurteilung aus mehreren Dokumentationen und tutorials, die ich gesehen habe im Internet, keiner von Ihnen call-handler.getLooper().beenden(). Also ich würde vermuten, dass ist nicht notwendig, dies ausdrücklich tun.
Aber es ist wirklich kein Nachteil, wenn Sie fügen Sie einfach diesen one-liner, um Ihre onDestroy () - Methode?
InformationsquelleAutor der Antwort
Hinzufügen, um die oben Antwort von Jonathan, bitte mit bedacht wählen zwischen quit() und quitSafely() als quit() beenden, ohne Verarbeitung mehr Nachrichten in der message queue, wo, wie quitSafely() endet, sobald alle verbleibenden Nachrichten in der Warteschlange, die sich bereits durch geliefert werden gehandhabt haben
InformationsquelleAutor der Antwort kAmol