onLoadFinished wird nicht aufgerufen, nachdem Sie von einer HOME-Taste zurückgekommen sind

8

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.

    
Catalin Morosan 19.09.2011, 17:18
quelle

1 Antwort

22

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):

%Vor%     
Catalin Morosan 20.09.2011, 08:05
quelle

Tags und Links