Come tutti sappiamo, molte app Android visualizzano una schermata bianca molto brevemente prima che la loro prima Activityvenga messa a fuoco. Questo problema si osserva nei seguenti casi:
App Android che estendono la
Applicationclasse globale e vi eseguono importanti inizializzazioni. L'Applicationoggetto viene sempre creato prima del primoActivity(un fatto che può essere osservato nel debugger), quindi ha senso. Questa è la causa del ritardo nel mio caso.App Android che visualizzano la finestra di anteprima predefinita prima della schermata iniziale.
L'impostazione android:windowDisablePreview = "true"ovviamente non funziona qui. Né posso impostare il tema principale della schermata iniziale Theme.Holo.NoActionBarcome descritto qui , perché [sfortunatamente] la mia schermata iniziale utilizza un file ActionBar.
Nel frattempo, le app che non estendono la Applicationclasse non mostrano la schermata bianca all'avvio.
Il fatto è che idealmente le inizializzazioni eseguite Applicationnell'oggetto devono avvenire prima cheActivity venga mostrato il primo . Quindi la mia domanda è: come posso eseguire queste inizializzazioni all'avvio dell'app senza utilizzare un Applicationoggetto? Forse usando un Threado Service, suppongo?
Questo è un problema interessante su cui riflettere. Non posso aggirarlo nel solito modo (impostando il NoActionBartema), poiché tragicamente la mia schermata iniziale ha effettivamente una ActionBarcausa per alcuni motivi non correlati.
Nota:
Ho già fatto riferimento alle seguenti domande:
Riferimenti:
Applicationcodice di inizializzazione fuori dalla classe. Ciò è dovuto alle versioni più recenti del modo in cui Android "avvia a freddo" le app. Google ha effettivamente affrontato i tempi di lancio all'I / O di Google quest'anno e sarà risolto in N da quello che ricordo. Nel frattempo, dovresti guardare a ciò che Google chiama una "schermata di lancio con marchio". Ecco un esempio su come crearlo: antonioleiva.com/branded-launch-screen - niente più schermo bianco all'inizio ;-) E per favore non usare splashscreen - è fastidioso per l'utente.


