Novedades del lanzamiento de Jetpack Compose el 24 de enero

Publicado por Ben TrengroveIngeniero de relaciones con desarrolladores de Android

Hoy, como parte del Redactar la lista de materiales del 24 de enero.estamos lanzando la versión 1.6 de Esfera Jetpackel moderno kit de herramientas de interfaz de usuario nativa de Android utilizado por aplicaciones como discusiones, RedditY buzón. Esta versión se centra principalmente en mejoras de rendimiento a medida que continuamos migrando modificadores y mejorando la eficiencia de partes clave de nuestra API.

Para usar la versión actual, actualice su versión de Compose BOM a 2024.01.00

plataforma de implementación (‘androidx.compose:compose-bom:2024.01.00’)

Actuación

El rendimiento sigue siendo nuestra principal prioridad y esta versión de Compose presenta importantes mejoras de rendimiento en todos los ámbitos. Estamos viendo más de esto. Aproximadamente un 20% de mejora en el rendimiento de desplazamiento y una mejora de aproximadamente el 12 % en el tiempo de inicio en nuestros puntos de referencia, además de las mejoras con respecto a la versión del 23 de agosto. Al igual que con esa versión, la mayoría de las aplicaciones verán estos beneficios simplemente actualizando a la última versión, sin requerir otros cambios de código.

La mejora en el rendimiento de desplazamiento y el tiempo de inicio proviene de nuestra atención continua a las asignaciones de memoria y la inicialización diferida, para garantizar que el marco solo se ejecute cuando sea necesario. Estas mejoras se pueden ver en todas las API de Compose, particularmente en las API de texto, listas en las que se puede hacer clic, listas diferidas y API de gráficos, incluidos los vectores, y fueron posibles en parte gracias al trabajo de refactorización en curso de Modifier.Node para múltiples versiones.

También hay nueva guía para crear sus propios modificadores personalizados con Modifier.Node.

Configurar la estabilidad de clases externa

El compilador Compose 1.5.5 introduce una nueva opción de compilador para proporcionar un archivo de configuración para lo que su aplicación considera estable. Esta opción le permite marcar cualquier clase como estable, incluidos sus propios módulos, clases de biblioteca externa y clases de biblioteca estándar, sin tener que modificar estos módulos o envolverlos en una clase contenedora estable. Tenga en cuenta que se aplica el contrato de estabilidad estándar; Esta es solo otra forma conveniente de informarle al compilador de Compose qué es lo que su aplicación debe considerar estable. Para obtener más información sobre cómo utilizar la configuración de estabilidad, consulte nuestra documentación.

Rendimiento del código generado.

También se ha mejorado el código generado por el complemento del compilador Compose. Pequeños cambios en este código pueden generar grandes mejoras de rendimiento debido al hecho de que el código se genera en cada función componible. El compilador Compose realiza un seguimiento de los objetos en el estado Compose para saber qué componentes componibles recomponer cuando se produce un cambio de valor; sin embargo, muchos valores de estado solo se leen una vez y algunos valores de estado nunca se leen pero aún así cambian con frecuencia. Esta actualización permite que el compilador ignore la detección cuando no es necesaria.

También compón el compilador 1.5.6 permite la “memoria intrínseca” por defecto. Este modo transforma la memoria durante la compilación para tener en cuenta la información que ya tenemos sobre cualquier parámetro de un componente componible utilizado como clave para recordar. Esto acelera el cálculo para determinar si es necesario reevaluar una expresión recordada, pero también significa que si coloca un punto de interrupción dentro de la función Remember durante la depuración, es posible que ya no se llame, ya que el compilador ha eliminado el uso de Remember y lo reemplacé con un código diferente.

Los componentes componibles no se omiten

También estamos invirtiendo en hacer que el código que usted escribe funcione mejor de forma automática. Queremos optimizar el código que escribes de una manera intuitiva, eliminando la necesidad de profundizar en los aspectos internos de Compose para comprender por qué tu elemento componible se recompone cuando no debería.

Esta versión de Compose agrega soporte para un modo experimental que llamamos “modo de salto fuerte”. El modo de omisión avanzado relaja algunas de las reglas sobre qué ediciones pueden omitir la recomposición, inclinando el equilibrio hacia lo que esperan los desarrolladores. Con el modo de omisión avanzado habilitado, los componentes componibles con parámetros inestables también pueden omitir la recomposición si se pasan las mismas instancias de objeto a sus parámetros. Además, el modo de salto avanzado recuerda automáticamente las lambdas en la composición que adquieren valores inestables, además del comportamiento predeterminado actual de recordar lambdas solo con adquisiciones estables. El modo de omisión avanzado es actualmente experimental y está deshabilitado de forma predeterminada, ya que aún no lo consideramos listo para su uso en producción. Estamos evaluando sus efectos antes de intentar habilitarlo de forma predeterminada en Compose 1.7. ver el nuestro guía para experimentar el modo de salto efectivo y ayudarnos a encontrar cualquier problema.

Texto

Cambios en el relleno de caracteres predeterminado

Esta versión ahora hace que la configuración includeFontPadding sea falsa de forma predeterminada. includeFontPadding es una propiedad heredada que agrega relleno adicional basado en métricas de caracteres en la parte superior de la primera línea y en la parte inferior de la última línea de un texto. Establecer esta configuración en falso hace que el diseño de texto predeterminado esté más en línea con las herramientas de diseño comunes, lo que facilita la coincidencia con las especificaciones de diseño generadas. Después de actualizar a la versión del 24 de enero, es posible que observe pequeños cambios en el diseño del texto y las pruebas de captura de pantalla. Para obtener más información sobre esta configuración, consulte Relleno de caracteres fijo en la composición de texto. publicación de blog y el documentación del desarrollador.

Alto de línea con includeFontPadding como falso a la izquierda y verdadero a la derecha.

Soporte para escalado de fuentes no lineales

La versión del 24 de enero utiliza escala de fuente no lineal para mejorar la legibilidad y accesibilidad del texto. La escala de fuente no lineal evita que los elementos de texto grandes en la pantalla se escale demasiado al aplicar una curva de escala no lineal. Esta estrategia de escala significa que el texto grande no se escala tan rápido como el texto más pequeño.

Arrastrar y soltar

componer base agrega soporte para arrastrar y soltar a nivel de plataforma, que le permite arrastrar contenido entre aplicaciones en un dispositivo que se ejecuta en modo de ventanas múltiples. La API es 100% compatible con las API de View, lo que significa que arrastrar y soltar iniciado desde una Vista se puede arrastrar a Compose y viceversa. Para utilizar esta API, consulte ejemplo de código.

Imagen en movimiento que ilustra la funcionalidad de arrastrar y soltar

Características adicionales

Otras características incluidas en esta versión incluyen:

    • Soporte para LookaheadScope en listas diferidas.
    • Fijado Componentes componibles que se han desactivado pero se han mantenido activos para su reutilización en una lista Lazy no filtrada de forma predeterminada por árboles semánticos.
    • Fotogramas clave basados ​​en splines en animaciones.
    • Soporte agregado para seleccionar con el ratón, incluido el texto.

¡Comenzar!

Agradecemos todos los informes de errores y solicitudes de funciones que nos envían. rastreador de problemas — ayúdanos a mejorar Compose y crear las API que necesitas. ¡Continúe enviando sus comentarios y ayúdenos a mejorar Compose!

¿Se pregunta cuál será el siguiente paso? Mira el 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

La actualización de CameraX hace que las cámaras duales simultáneas sean aún más fáciles

Publicado por Donovan McMurray – Ingeniero de relaciones con desarrolladores CámaraXLa biblioteca de cámaras Jetpack …

Deja una respuesta

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