2016-11-16 4 views
0

Wenn ich Daten von einer API in einem Fragment anzeigen muss (mit einer AsyncTask), sagen wir eine Liste von Elementen in einem RecyclerView, glaube ich Es sollte nicht in onCreate() oder onCreateView() durchgeführt werden, da theoretisch die Ansichtselemente initialisiert werden und möglicherweise nicht bereit sind zu verwenden, wenn der Aufruf der API schneller ist. Hab ich recht?
(Ich nehme an, es ist irgendwie unmöglich, eine Antwort von einer API in weniger Zeit zu erhalten, als es für Android benötigt, um die Ansicht zu erstellen).Empfohlene Methode zum Abrufen von Daten zur Anzeige (von einer API) in einem Android-Fragment

Es gibt onActivityCreated() und onStart(), aber ich bin immer noch verwirrt, wenn die übergeordnete Aktivität sie aufruft.
Die Sache, die ich vermeiden möchte, ist Daten neu zu laden (einen Aufruf der API), wenn es nicht notwendig ist, zum Beispiel wegen einer Orientierungsänderung oder zurück zu dieser Aktivität nach einem Klick auf die Zurück-Schaltfläche von einem möglichen "nächsten" Aktivität.

Danke.

Antwort

0

Wenn es Ihr erstes „Fenster“ ist (Aktivität oder was auch immer) der einzige Weg, ich weiß, ist eine Lade Text zeigt, Bild usw.

Wenn es nicht Ihre erste Ansicht wird Sie Ihre Daten geladen werden können ein anderes Fenster und speichern Sie es zur späteren Verwendung, wenn der Benutzer die Ansicht erreicht, um die Informationen anzuzeigen.

Sie können es laden direkt in Ihrem onCreate, onStart oder so, aber wie Sie gesagt haben wahrscheinlich werden Sie nicht Zeit, um die Informationen zum Download, also wieder, zeigen eine loading Seite oder was auch immer Sie wollen, während die Daten stammen.

Um Initialisierungsfehler zu vermeiden, rufen Sie Ihre AsyncTask nach dem Initialisieren der Elemente auf. Um zu vermeiden, dass die API mehrmals aufgerufen wird, speichern Sie Ihre Daten lokal, während die App geöffnet wird. Dies hängt von den Anforderungen Ihrer App ab:

Verwandte Themen