Da Honeycomb
und das ist v4 Compatibility Library
es möglich zu benutzen AsyncTaskLoader
. Soweit ich weiß, AsyncTaskLoader
kann das durch Konfigurationsänderungen wie Bildschirmwechsel überleben.
Wird empfohlen, AsyncTaskLoader
anstelle von zu verwenden AsyncTask
? Kommt LoaderManager
man auch ins Bild?
Aber ich habe keine guten Beispiele gefunden, wie man das richtig benutzt AsyncTaskLoader
. Die Dokumente enthalten auch keine Beispiele. Kann jemand einige gute Beispiele liefern.
AsyncTaskLoader
, und wenn mehr Entwickler damit beginnen, werden weitere Beispiele folgen.Wenn vergleichen AsyncTaskLoader vs. AsyncTask , wie Sie wissen, wenn Sie Ihr Gerät Bildschirm drehen, kann es zerstören und neu erstellen Sie Ihre Aktivitäten, um klarzustellen , let Bild das Gerät drehen , während die Vernetzung Transaktion los ist:
AsyncTask wird erneut als Hintergrundthread ausgeführt, und die vorherige Verarbeitung des Hintergrundthreads war nur redundant und zombie.
AsyncTaskLoader wird nur basierend auf der zuvor im Loader Manager registrierten Loader-ID wiederverwendet. Vermeiden Sie daher die erneute Ausführung von Netzwerktransaktionen.
Zusammenfassend lässt sich sagen, dass AsyncTaskLoader das Duplizieren von Hintergrundthreads verhindert und das Duplizieren von Zombie-Aktivitäten verhindert.
quelle
AsyncTaskLoader hat dieselbe Funktion wie AsyncTask , ist jedoch etwas besser. Es kann Änderungen an der Aktivitätskonfiguration einfacher verarbeiten und verhält sich innerhalb der Lebenszyklen von Fragmenten und Aktivitäten. Das Schöne ist, dass der AsyncTaskLoader in jeder Situation verwendet werden kann, in der der AsyncTask verwendet wird. Immer wenn Daten in den Speicher geladen werden müssen, damit die Aktivität / das Fragment verarbeitet werden kann, kann der AsyncTaskLoader die Aufgabe besser erledigen.
Es gibt jedoch einige Probleme bei der Verwendung von AsyncTasks:
AsyncTaskLoader doc
quelle
Einige andere Unterschiede als in anderen Antworten beschrieben:
Bei Verwendung von AsyncTaskLoader über AsyncTask :
AsyncTaskLoader gibt uns die Freiheit, alte zwischengespeicherte Daten zu laden, bis neue Daten von zurückgegeben werden
forceLoad()
Wir können Verzögerungen einstellen AsyncTaskLoader von
setUpdateThrottle()
denen aufeinanderfolgende Updates auf Client verhindern kann (Aktivität / Fragment)AsyncTaskLoader kann für mehrere Fragmente freigegeben werden, wenn sie eine gemeinsame übergeordnete Aktivität haben und von dort aus gestartet wurde
getActivity().getSupportLoaderManager()
AsyncTaskLoader wird zerstört,
LoaderManger
wenn seine verknüpfte Aktivität nicht mehr verfügbar ist. während wir AsyncTasks manuell zerstören müssen, wenn die Aufruferaktivität zerstört wird. Dies spart uns Zeit beim Schreiben des gesamten Clearing-Materials. AsyncTaskLoader spielt gut mit ihren jeweiligen Lebenszyklen.AsyncTaskLoader ist also viel besser als AsyncTask.
quelle