Jetpack Compose ofrece un rendimiento excelente listo para usar. Configura tu app con las prácticas recomendadas para evitar errores comunes y optimizar el rendimiento de tu aplicación de Compose.
Habilidades de Android
Ver en GitHubRendimiento de Jetpack Compose
android skills add jetpack-compose-performanceCómo realizar comparativas de Jetpack Compose
Para validar el rendimiento de Jetpack Compose en comparación con las vistas, usamos comparativas de referencia, que se enfocan en recorridos del usuario importantes y reales, como el inicio en frío de una app o el desplazamiento por una lista o cuadrícula con imágenes. Realizamos estas comparativas con la app de código abierto de Pokedex, en la que comparamos sus implementaciones de Views y Compose.
Estas comparativas muestran que Compose 1.9 y versiones posteriores coinciden con el rendimiento de las vistas en cuanto a los tirones durante el desplazamiento.
Para obtener métricas adicionales y conocer nuestras metodologías, consulta Comparativas de Hero.
Conceptos clave
Estos son algunos de los conceptos clave para el rendimiento en Compose:
- Fases: Comprender las fases de composición, diseño y dibujo es fundamental para optimizar la forma en que Compose actualiza tu IU.
- Perfiles de Baseline: Estos perfiles precompilan el código esencial, lo que genera inicios de apps más rápidos y una interacción más fluida.
- Estabilidad: Comprende cómo Compose compara los parámetros durante la recomposición para que puedas omitir el trabajo innecesario sin introducir verificaciones de igualdad costosas.
Configura tu app de forma correcta
Si el rendimiento de tu app es deficiente, es posible que haya un problema de configuración. Un buen primer paso es revisar las siguientes opciones de configuración:
- Compila en el modo de lanzamiento con R8: Intenta ejecutar tu app en el modo de lanzamiento. El modo de depuración es útil para detectar muchos problemas, pero implica un costo de rendimiento y puede dificultar la detección de otros problemas. También debes habilitar la optimización y la reducción con el compilador R8 para garantizar una compilación de lanzamiento eficiente y de alto rendimiento.
- Usa perfiles de Baseline: Los perfiles de Baseline mejoran el rendimiento, ya que precompilan el código para los recorridos críticos del usuario. Compose incluye un perfil predeterminado, pero, idealmente, también deberías crear uno específico de la app. Obtén más información sobre los perfiles de Baseline en la documentación general de rendimiento de Android.
Herramientas
Familiarízate con el paquete de herramientas disponibles para ayudarte a medir y analizar el rendimiento de tu app de Compose.
Prácticas recomendadas
Cuando desarrolles tu app con Compose, ten en cuenta estas prácticas recomendadas:
- Evita los cálculos costosos: Usa
rememberpara almacenar en caché los resultados de los cálculos costosos. - Ayuda a los diseños diferidos: Proporciona parámetros
keyycontentTypeestables a los diseños diferidos para minimizar las recomposiciones innecesarias y habilitar la reutilización de ranuras. - Limita las recomposiciones innecesarias: Usa
computedStateOf(en Compose 1.13 y versiones posteriores) oderivedStateOfpara limitar las recomposiciones cuando se lee un estado que cambia rápidamente. - Aplaza las lecturas de estado: Aplaza las lecturas de estado el mayor tiempo posible uniéndolas en funciones lambda.
- Usa modificadores lambda para cambiar el estado: Usa modificadores basados en lambdas, como
Modifier.offset { ... }, para las variables de estado que cambian con frecuencia. - Evita las escrituras hacia atrás: Nunca escribas en un estado que ya se haya leído en un elemento componible.
Para obtener más detalles, consulta la guía de prácticas recomendadas.
Vistas
Si trabajas con vistas en lugar de Compose, consulta la guía dedicada para mejorar el rendimiento del diseño.
Recursos adicionales
- Guía de rendimiento de la app: Descubre las prácticas recomendadas, las bibliotecas y las herramientas para mejorar el rendimiento en Android.
- Inspecciona el rendimiento: Inspecciona el rendimiento de la app.
- Comparativas: Realiza comparativas del rendimiento de la app.
- Inicio de apps: Optimiza el inicio de la app.
- Perfiles de Baseline: Comprende los perfiles de Baseline.