È possibile caricare una nuova attività in background prima di passare alla visualizzazione di quella attività?Carica un'attività in background prima di visualizzarla
Ad esempio, mi piacerebbe avere un'attività su schermo che viene chiamata e visualizza una schermata iniziale. Mentre viene visualizzata questa schermata iniziale, viene caricata l'attività successiva e al termine del caricamento (al termine di onCreate()), l'attività della schermata iniziale termina e viene visualizzata la nuova attività.
Conosco un'altra opzione per visualizzare la schermata iniziale nella nuova attività e utilizzare un'attività asincrona per caricare tutti i dati prima di rimuovere l'immagine splash ... ma sono bloccato anche su tale approccio. L'attività deve innanzitutto caricare una discreta quantità di dati e quindi deve aggiungere in modo dinamico elementi GUI basati su tali dati. Una volta che la GUI è completamente caricata, allora voglio rimuovere la schermata iniziale. Il problema è che non riesco a toccare il thread dell'interfaccia utente da doInBackground(). Come posso creare la mia attività dietro una schermata iniziale, se non riesco ad aggiornare l'interfaccia utente da doInBackground? So che onProgressUpdate() può accedere al thread dell'interfaccia utente, ma non riesco a capire come implementarlo.
Qualche idea? Grazie!
Mi dispiace di non poter fornire alcun codice, in quanto ho firmato una NDA che mi impedisce di condividere il codice. Posso parlare in generale comunque. In pratica sto caricando un xml a seconda di una condizione, e quel file xml mi dice quali immagini devo mostrare, così come le informazioni che sono legate a quell'immagine. Passo e creo dinamicamente le immagini dall'elenco delle immagini restituite e le aggiungo a una vista. Ci vogliono 2-3 secondi prima che compaia tutto sullo schermo (ci sono molte immagini), quindi voglio mostrare uno splash fino a quando tutto è caricato e pronto per essere interagito con. – romamnmlst
In questo caso, penso che si possa analizzare il file XML nella funzione doInBackground() sopra, creare il ImageView e impostare l'origine dell'immagine e restituire un elenco di ImageView dalla funzione doInBackground(). La funzione onPostExecute() prenderà l'elenco di ImageViews e le aggiungerà alla gerarchia della vista dopo setContentView(). Tutto ciò che fai in onPostExecute() viene eseguito nel thread principale in modo da poter modificare gli elementi dell'interfaccia utente da qui. – hiBrianLee
Eccellente, darò uno scatto e vedrò come funziona. Grazie! (Potrebbe volerci un po ', ma se funziona sarò sicuro di tornare e contrassegnare la tua risposta come accettata) – romamnmlst