Fases y rendimiento de Compose

Cuando Compose actualiza un fotograma, pasa por tres fases:

  • Composición: Compose determina qué mostrar. Ejecuta funciones de componibilidad y compila el árbol de IU.
  • Diseño: Compose determina el tamaño y la posición de cada elemento en el árbol de IU.
  • Dibujo: En realidad, Compose renderiza los elementos individuales de la IU.

Compose puede omitir de manera inteligente cualquiera de esas fases si no es necesaria. Por ejemplo, supongamos que un solo elemento gráfico cambia entre dos íconos del mismo tamaño. Como este elemento no cambia de tamaño y no se agregan ni quitan elementos del árbol de IU, Compose puede omitir las fases de composición y diseño, y volver a dibujar este elemento.

Sin embargo, los errores de programación pueden dificultar que Compose sepa qué fases puede omitir de forma segura, en cuyo caso Compose ejecuta las tres fases, lo que puede ralentizar tu IU. Por lo tanto, muchas de las prácticas recomendadas para el rendimiento ayudan a Compose a omitir las fases que no necesita.

Para obtener más información, consulta la guía de fases de Jetpack Compose.

Principios generales

Se deben seguir algunos principios generales que pueden mejorar el rendimiento en general:

  • Siempre que sea posible, quita los cálculos de las funciones de componibilidad. Es posible que se deban volver a ejecutar las funciones de componibilidad cada vez que cambie la IU. Cualquier código que coloques en el elemento componible se volverá a ejecutar, posiblemente para cada fotograma de una animación. Limita el código del elemento componible solo a lo que necesita para compilar la IU.
  • Aplaza las lecturas de estado el mayor tiempo posible. Si mueves la lectura de estado a un elemento secundario componible o a una fase posterior, puedes minimizar la recomposición, o bien omitir la fase de composición por completo. Para ello, puedes pasar las funciones lambda en lugar del valor de estado para el estado que cambia con frecuencia y si prefieres modificadores basados en lambda cuando pasas un estado que cambia con frecuencia. Puedes ver un ejemplo de esta técnica en la sección Aplaza las lecturas el mayor tiempo posible de Sigue las prácticas recomendadas.

Recursos adicionales