Wenn ich eine benutzerdefinierte AsyncTaskLoader
zum Herunterladen von Daten von einem Webdienst verwende, wird die onLoadFinished () -Methode nicht aufgerufen, wenn ich während des Ladevorgangs die HOME-Taste drücke und die App dann erneut eingebe. Mein Fragment ruft setRetainInstance(true)
in onActivityCreated()
auf und ruft auch getLoaderManager.initLoader(0, null, this)
in der gleichen Methode auf (wie empfohlen).
Während des Testens sehe ich, dass beim Zurückkommen auf das Fragment onActivityCreated()
nicht aufgerufen wird, deshalb kann onLoadFinished()
nicht aufgerufen werden. Aber wo sollte man die Methode initLoader()
noch hinstellen? Ich habe an mehreren Stellen gelesen, dass es in onResume()
nicht aufgerufen werden sollte.
Also, irgendwelche Ideen? Ich habe viele Loader in verschiedenen Bildschirmen in meiner App und ich muss dieses Problem auf elegante Weise lösen.
Nachdem ich die Ausgabe 14944 ( Ссылка ) angeschaut habe, habe ich das Problem durch Überschreiben behoben onStartLoading()
in meinem benutzerdefinierten AsyncTaskLoader
und Aufruf forceLoad()
.
Eine noch bessere Lösung ist es, ein benutzerdefiniertes Elternteil AsyncTaskLoader
zu erstellen, das so aussieht (nach einem Vorschlag von alexvem aus dem obigen Link):