Hace unos años, trabajé en la optimización del tiempo de arranque de Android, como desarrollador de Android. Obviamente, como parte de este trabajo, primero necesitábamos analizar dónde Android pasa tiempo durante el arranque.
A continuación se presentan los breves hallazgos:
Hardware utilizado : OMAP3430 Board
que es como una placa de desarrollo en la que se muestra Stock Android. En el dispositivo comercial / de producción real, habrá hardware específico adicional. Para visualizar el tiempo de arranque, utilizamos una herramienta de desarrollador llamadabootchart
La mayor parte del tiempo que dedica Android es en las siguientes 2 áreas:
- Proceso de cigoto . Cuando se inicia Android OS, iniciará el proceso Zygote, precarga las clases para crear un área de memoria compartida para las aplicaciones. Este trabajo de recarga de clases de Java tarda @ 23 segundos para su finalización.
¿Por qué? Porque la precarga de la clase zygote es esencial para un buen rendimiento del sistema después del arranque. Entonces, una vez que se cargan las clases de todas las aplicaciones, el tiempo de ejecución de la aplicación es mucho más rápido.
- Servicio de administrador de paquetes.
En la salida de logcat, podemos ver que Package Manager escanea 4 directorios.
/system/app
``
/system/framework
`
/data/app
`
/data/app-private
.
A continuación, hay un componente llamado Administrador de actividades que inicia diferentes servicios, como el servicio de ubicación, el servicio de telefonía, etc. Y toma cerca de 11-12 segundos terminar esto.
¿Por qué? Porque, la exploración del paquete puede, en teoría, almacenar en caché algunos de sus resultados después del primer arranque y puede verificar si hay vulnerabilidades de seguridad.
Si suma estas 2 veces, son aproximadamente 35 segundos
Puede ignorar estos números hoy en día, pero el punto que indican estos números es donde el código AOSP de Android pasa tiempo durante el arranque. Los OEM tienen su propio conjunto de hardware que varía de dispositivo a dispositivo.
Por supuesto, hay otras inicializaciones de hardware y software que Android necesita hacer después de estos 2 pasos que consumen mucho tiempo, lo que puede alargar aún más el tiempo de arranque.
¿Y puedo hacer algo como usuario para acelerar el proceso de arranque?
No mucho, supongo. La comunidad de desarrolladores de Android y los fabricantes de equipos originales todavía están trabajando para acelerar el tiempo de arranque, pero como puede imaginar, no es tan fácil y hacer cambios para optimizar el tiempo de arranque puede terminar causando más tiempo de carga de la aplicación durante las operaciones normales, como lo sugiere el marco de Android ingeniero .