Como todos sabemos, muitos aplicativos Android exibem uma tela branca brevemente antes de seu primeiro Activityentrar em foco. Este problema é observado nos seguintes casos:
Aplicativos Android que estendem a
Applicationclasse global e executam inicializações importantes nela. OApplicationobjeto é 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.NoActionBarconforme descrito aqui , porque [infelizmente] minha tela inicial usa umActionBar .
Enquanto isso, aplicativos que não estendem a Applicationclasse não mostram a tela branca na inicialização.
A questão é que, idealmente, as inicializações realizadas no Applicationobjeto precisam ocorrer antes que a primeira Activityseja mostrada. Então, minha pergunta é: como posso realizar essas inicializações na inicialização do aplicativo sem usar um Applicationobjeto? Possivelmente usando um Threadou Service, suponho?
Este é um problema interessante para se pensar. Não consigo ignorar da maneira usual (definindo o NoActionBartema), pois tragicamente minha tela inicial tem umActionBar devido a alguns motivos não relacionados.
Nota:
Já me referi às seguintes questões:
Referências:
Applicationclasse. 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.


