Non riesco a capire bene questo business del ciclo di vita dei frammenti.Perché il mio frammento suCreate viene chiamato estesamente ogni volta che sfoglio le mie applicazioni viewPager?
Ho una finestra di scorrimento orizzontale standard di 3 pagine Visualizza il layout del cercapersone per una sezione "visualizza dettagli" della mia app. Inizio la mia app nella pagina centrale dei tre. Il mio FragmentActivity imposta la pagina in pagina 1.
mPager.setCurrentItem(1); //default to center page, current data view fragment
Sto usando il FragmentStatePagerAdapter perché usando il FragmentPagerAdapter schiantato la mia app, a volte, quando di ritorno da uno stato sospeso, per esempio, e questo era il modo più rapido per lavorarci intorno per ora. Sembra funzionare, ma sospetto che l'aspetto dello Stato sia ciò che potrebbe essere la causa del mio problema qui, forse.
Quindi all'inizio pensavo che avrei dovuto fare in modo che ogni frammento facesse il lavoro di ottenere i dati da un servizio di riposo e lo mostrasse in un elenco, ma non ne sono più così sicuro.
Ho provato a eseguire un'attività asincrona unica per recuperare i dati in ciascuno degli eventi frammenti suCreateView. Poi, dopo aver letto di più sul ciclo di vita del frammento, sono passato a onCreate, avendo notato che onCreateView veniva chiamato piuttosto pesantemente, il che a sua volta creava un'app avida che troppo spesso richiedeva dati sul filo.
Passare a onCreate non ha cambiato nulla. OnCreate viene ancora chiamato tanto quanto onCreateView per i 2 frammenti adiacenti.
La cosa strana è che il frammento che ho impostato per essere il primo da visualizzare in Fragment Activity ottiene solo il onCreate chiamato la volta sola.
Qualcosa non sembra proprio qui.
In questo momento sto pensando che dovrei dichiarare l'attività del frammento principale e chiamare tutte le attività asincrone per recuperare i dati che ho bisogno di visualizzare nei frammenti. Impostare i risultati delle chiamate asincrone in un oggetto di proprietà della attività di frammento genitore e poi hanno i frammenti utilizzare l'oggetto contenuto dal genitore per creare la vista lista ecc
Ma cosa succede se i compiti asincroni iniziate da genitore l'attività non finire prima di ogni frammenti onCreateView viene chiamato e l'oggetto contenuto da parte del genitore non è ancora pronto .....
firmato, confuso e frustrato
oh ya, sembra utile provarlo. quindi, hey, sparare compiti asincroni da un frammento suCreate sembra un modo standard per fare qualcosa? in questo momento sparo tre compiti asincroni separati una volta che il mio frammento Attività carica, giusto o sbagliato .... – topwik
Sì, l'unico problema che potrei vedere con questo è se un utente ruota il dispositivo quando è in esecuzione AsyncTask. Non ho molta esperienza con loro comunque. Potrebbe valere la pena di verificare la classe AsyncTaskLoader, credo che le classi Loader automatizzino un sacco di cose per te. –
Ho anche intrappolato in questo problema. Ora devo andare al lavoro. Grazie molto. – Durai