Come tutti sappiamo, molte app Android visualizzano una schermata bianca molto brevemente prima che la loro prima Activity
venga messa a fuoco. Questo problema si osserva nei seguenti casi:
App Android che estendono la
Application
classe globale e vi eseguono importanti inizializzazioni. L'Application
oggetto 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.NoActionBar
come descritto qui , perché [sfortunatamente] la mia schermata iniziale utilizza un file ActionBar
.
Nel frattempo, le app che non estendono la Application
classe non mostrano la schermata bianca all'avvio.
Il fatto è che idealmente le inizializzazioni eseguite Application
nell'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 Application
oggetto? Forse usando un Thread
o Service
, suppongo?
Questo è un problema interessante su cui riflettere. Non posso aggirarlo nel solito modo (impostando il NoActionBar
tema), poiché tragicamente la mia schermata iniziale ha effettivamente una ActionBar
causa per alcuni motivi non correlati.
Nota:
Ho già fatto riferimento alle seguenti domande:
Riferimenti:
Application
codice 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.