Como todos sabemos, muitos aplicativos Android exibem uma tela branca brevemente antes de seu primeiro Activity
entrar em foco. Este problema é observado nos seguintes casos:
Aplicativos Android que estendem a
Application
classe global e executam inicializações importantes nela. OApplication
objeto é sempre criado antes do primeiroActivity
(fato que pode ser observado no depurador), então faz sentido. Essa é a causa do atraso no meu caso.Aplicativos Android que exibem a janela de visualização padrão antes da tela inicial.
A configuração android:windowDisablePreview = "true"
obviamente não funciona aqui. Nem posso definir o tema pai da tela inicial Theme.Holo.NoActionBar
conforme descrito aqui , porque [infelizmente] minha tela inicial usa umActionBar
.
Enquanto isso, aplicativos que não estendem a Application
classe não mostram a tela branca na inicialização.
A questão é que, idealmente, as inicializações realizadas no Application
objeto precisam ocorrer antes que a primeira Activity
seja mostrada. Então, minha pergunta é: como posso realizar essas inicializações na inicialização do aplicativo sem usar um Application
objeto? Possivelmente usando um Thread
ou Service
, suponho?
Este é um problema interessante para se pensar. Não consigo ignorar da maneira usual (definindo o NoActionBar
tema), pois tragicamente minha tela inicial tem umActionBar
devido a alguns motivos não relacionados.
Nota:
Já me referi às seguintes questões:
Referências:
Application
classe. Isso se deve às versões mais recentes da maneira do Android de "inicializar a frio" os aplicativos. O Google realmente abordou os horários de lançamento no Google I / O este ano e será corrigido em N pelo que me lembro. Nesse ínterim, você deve olhar para o que o Google chama de "tela de lançamento de marca". Aqui está um exemplo de como criá-lo: antonioleiva.com/branded-launch-screen - chega de tela branca no início ;-) E, por favor, não use splashscreens - é irritante para o usuário.