Novedades del lanzamiento de Jetpack Compose del 23 de agosto

Publicado por Ben TrengroveIngeniero de relaciones con desarrolladores de Android

Hoy, bajo el Redactar la lista de materiales del 23 de agosto.estamos lanzando la versión 1.5 de Esfera Jetpackel moderno kit de herramientas de interfaz de usuario nativa de Android utilizado por aplicaciones como Play Store, Dropbox y Airbnb. Esta versión se centra principalmente en mejoras de rendimiento, ya que partes importantes de nuestro refactorización de modificadores que comenzaron en la versión del 22 de octubre ahora están fusionados.

Actuación

Cuando lanzamos Compose 1.0 por primera vez en 2021, nos centramos en optimizar la superficie de la API para proporcionar una base sólida sobre la que construir. Queríamos una API potente y expresiva que fuera fácil de usar y estable para que los desarrolladores pudieran usarla con confianza en producción. A medida que continuamos mejorando la API, el rendimiento es nuestra principal prioridad y en la versión del 23 de agosto obtuvimos varias mejoras de rendimiento.

Rendimiento del modificador

Los modificadores ven grandes mejoras de rendimiento, Hasta un 80% de mejora en el tiempo de composición., en esta versión. La mejor parte es que, gracias a nuestro trabajo para obtener la superficie API desde la primera versión, la mayoría de las aplicaciones verán estos beneficios simplemente actualizándose a la versión del 23 de agosto.

Contamos con un conjunto de puntos de referencia que se utilizan para monitorear las regresiones y guiar nuestras inversiones en la mejora del desempeño. Después de la versión 1.0 inicial de Compose, comenzamos a centrarnos en dónde podíamos realizar mejoras. Los benchmarks mostraron que estábamos tardando más de lo esperado en materializar los modificadores. Los modificadores constituyen la gran mayoría de un árbol de composición y, como tal, son los que más contribuyen al tiempo de composición inicial en Compose. La refactorización de modificadores para un diseño más eficiente comenzó entre bastidores en la versión del 22 de octubre.

La versión del 22 de octubre incluyó nuevas API y mejoras de rendimiento en nuestro módulo de nivel más bajo. Redactar interfaz de usuario. Los modificadores se superponen entre sí, por lo que comenzamos a migrar nuestros modificadores de bajo nivel. componer base en la próxima versión, marzo ’23. Esto incluía gráficosLayer, modificadores de enfoque de bajo nivel, relleno y desplazamiento. Estos modificadores de bajo nivel los utilizan otros modificadores muy utilizados, como Clickable, y también los utilizan muchos componentes del marco componible, como Texto. La migración de modificadores en la versión del 23 de marzo trajo mejoras de rendimiento a esos componentes, pero los beneficios reales llegarían cuando pudiéramos migrar los modificadores de nivel superior y los componentes componibles al nuevo sistema de modificadores.

En la versión del 23 de agosto comenzamos migración el modificador Clickable al nuevo sistema de edición, realizando mejoras sustanciales para componer el tiempo en algunos casos hasta 80%. Esto es especialmente relevante en listas diferidas que contienen elementos en los que se puede hacer clic, como botones. Indicación.del.modificadorutilizado por Clickable, aún se está migrando, por lo que esperamos que se incluyan más mejoras en futuras versiones.

Como parte de este trabajo, hemos identificado un caso de uso para modificadores compuestos que no estaba cubierto en el refactor original y hemos agregado un nueva API para crear elementos Modifier.Node que usan instancias de CompositionLocal.

Ahora estamos trabajando en la documentación para guiarlo en la migración de sus modificadores a la nueva API Modifier.Node. Para comenzar de inmediato, puede consultar muestras en nuestro repositorio.

Obtenga más información sobre la lógica detrás de los cambios en el archivo. Obtenga más información sobre los modificadores de composición discurso de la Android Dev Summit ’22.

Memoria

Esta versión incluye una serie de mejoras en el uso de la memoria. Hemos analizado de cerca las asignaciones que ocurren entre las diferentes API de Compose y hemos reducido las asignaciones totales en varias áreas, sobre todo en la pila de gráficos y la carga de recursos vectoriales. Esto no solo reduce el uso de memoria de Compose, sino que también mejora directamente el rendimiento, ya que dedicamos menos tiempo a asignar memoria y menos recolección de basura.

Además, corregimos un pérdida de memoria al usar ComposeView, lo que beneficiará a todas las aplicaciones, pero especialmente a aquellas que usan una arquitectura multitarea o grandes cantidades de interoperabilidad Ver/Componer.

Texto

BasicText cambió a un nuevo sistema de renderizado respaldado por el trabajo de edición, lo que generó una ganancia promedio de 22% en comparación con el tiempo de composición inicial y hasta un 70% de ganancia en un benchmark de diseños complejos que involucran texto.

También se han estabilizado varias API de texto, entre ellas:

Mejoras y correcciones para las características principales.

También hemos introducido nuevas funciones y mejoras en nuestras API principales, además de estabilizar algunas API:

  • LazyStaggeredGrid ahora es estable.
  • Se agregó la API asComposePaint para reemplazar toComposePaint ya que el objeto devuelto encierra el android.graphics.Paint original.
  • Agregado Política de medidas intermedias para admitir la anticipación en SubcomposeLayout.
  • Agregado onInterceptKeyBeforeSoftKeyboard modificador para interceptar eventos clave antes del teclado virtual.

¡Comenzar!

Agradecemos todos los informes de errores y solicitudes de funciones enviadas a nuestro rastreador de problemas — ayúdanos a mejorar Compose y crear las API que necesitas. ¡Sigue enviando tus comentarios y ayúdanos a mejorar Compose!

¿Se pregunta cuál será el siguiente paso? Echa un vistazo a nuestro mapa vial para ver las funciones en las que estamos pensando y trabajando actualmente. ¡Estamos ansiosos por ver qué construyes a continuación!

¡Buena composición!


Compruebe también

Permitir que todos los desarrolladores construyan para el hogar

Publicado por Matt Van Der Staay, director de ingeniería de Google Home Este blog fue …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *