Como todos sabemos, muchas aplicaciones de Android muestran una pantalla en blanco muy brevemente antes de que Activity
se enfoque la primera . Este problema se observa en los siguientes casos:
Aplicaciones de Android que amplían la
Application
clase global y realizan importantes inicializaciones en ella. ElApplication
objeto siempre se crea antes que el primeroActivity
(hecho que se puede observar en el depurador), por lo que esto tiene sentido. Esta es la causa del retraso en mi caso.Aplicaciones de Android que muestran la ventana de vista previa predeterminada antes de la pantalla de presentación.
La configuración android:windowDisablePreview = "true"
obviamente no funciona aquí. Tampoco puedo configurar el tema principal de la pantalla de inicio Theme.Holo.NoActionBar
como se describe aquí , porque [desafortunadamente] mi pantalla de inicio utiliza un archivo ActionBar
.
Mientras tanto, las aplicaciones que no amplían la Application
clase no muestran la pantalla blanca al inicio.
La cuestión es que, idealmente, las inicializaciones realizadas en el Application
objeto deben ocurrir antes de queActivity
se muestre la primera . Entonces, mi pregunta es, ¿cómo puedo realizar estas inicializaciones al iniciar la aplicación sin usar un Application
objeto? Posiblemente usando un Thread
o Service
, supongo.
Este es un problema interesante en el que pensar. No puedo omitirlo de la forma habitual (configurando el NoActionBar
tema), ya que, trágicamente, mi pantalla de bienvenida tiene un efecto ActionBar
debido a algunas razones no relacionadas.
Nota:
Ya me he referido a las siguientes preguntas:
Referencias:
Application
clase. Esto se debe a las versiones más recientes de la forma de Android de "iniciar en frío" las aplicaciones. Google realmente abordó los tiempos de lanzamiento en Google I / O este año y se arreglará en N según lo que recuerdo. Mientras tanto, debería mirar lo que Google llama una "pantalla de inicio de marca". Aquí hay un ejemplo sobre cómo crearlo: antonioleiva.com/branded-launch-screen - no más pantalla en blanco al principio ;-) Y por favor no use pantallas de bienvenida - es molesto para el usuario.