¡Jetpack está actualizado!

Autor original: Florina Muntenescu
Dirección original: https: //medium.com/androiddevelopers/whats-new-in-jetpack-1891d205e136
Traductor: Bing heart dice

Hmm ... Jetpack lanzó una ola de actualizaciones, y Android 11 Beta se lanzó oficialmente la semana pasada, así que ... nosotros ... parece estar enfrentando otra ola de conocimiento.

Por supuesto, primero puede hacer una comprensión simple, y qué tecnologías relacionadas son particularmente buenas, y habrá tutoriales prácticos especiales para todos en el seguimiento.

Iba a empujarlo a todos antes, pero lo he arrastrado hasta ahora ...

Para convertirse en un buen desarrollo de Android, un sistema de conocimiento es esencial:

Visión general

Android Jetpack es un paquete de biblioteca de clases que le ayuda a crear fácilmente aplicaciones de alta calidad y es compatible con versiones anteriores del sistema. Dos años después del lanzamiento de Jetpack, hemos visto la adopción generalizada de muchas aplicaciones y más desarrolladores han comenzado a usarlo. Esto es solo el comienzo: hoy publicaremos los resultados del año pasado, algunas bibliotecas nuevas y actualizaciones importantes de las bibliotecas existentes.

Nuevo en Alpha

Biblioteca de inyección Hilt-Dependency recomendada por Jetpack

Nota del traductor: Hace unos días, los Nuggets publicaron un artículo en el que se presentaba Hilt, Dagger Hilt !! Muchos lectores todavía lo consideran como Dagger en el área de comentarios.

De hecho, el funcionario también sabe que Dagger2 es difícil de usar y la curva de aprendizaje es empinada, por lo que existe Hilt, una biblioteca de inyección de dependencias basada en Dagger2 para Android.

https://juejin.im/post/5edb5ef3f265da76c76b17d8

Hilt es una biblioteca de clases de Android que lo ayuda a simplificar las operaciones de inyección de dependencia. Le permite concentrarse en las partes importantes de la definición y la inyección sin preocuparse por administrar todas las configuraciones de DI.

Basado en Dagger, Hilt hereda su corrección en tiempo de compilación y también mejora el rendimiento y la escalabilidad en tiempo de ejecución. Hilt agrega la integración de la biblioteca de clases Jetpack y la clase de Android Framework. Por ejemplo, para inyectar los parámetros de ViewModel, puede agregar la anotación @ViewModelInject al constructor de ViewModel y la anotación @AndroidEntryPoint a Fragment.

<!-- Copyright 2019 Google LLC.    
   SPDX-License-Identifier: Apache-2.0 -->

class SearchViewModel @ViewModelInject constructor(
    private val repository: SearchRepository
): ViewModel() { … }

@AndroidEntryPoint
class SearchFragment : Fragment() {
    val viewModel: SearchViewModel by viewModels()
}

En nuestro blog Inyección de dependencias en Android con Hilt, puede obtener más información sobre Hilt.

https://medium.com/androiddevelopers/dependency-injection-on-android-with-hilt-67b6031e62d

Paging3-Cargar y mostrar datos progresivamente

Paging es una biblioteca de clases que le ayuda a cargar y mostrar datos gradualmente en bloques.

Hoy lanzamos Paging3, una reescritura completa usando Kotlin Coroutines. Esta versión agrega nuevas características de alto perfil, como separador, encabezado, pie de página, conversión de lista, API para reintentar y actualizar el estado de carga de la lista de observación.

A través de Paging3, la fuente de datos puede heredar PagingSource e implementar el método de suspensión de carga, en el que se pueden llamar directamente otras funciones de suspensión.

<!-- Copyright 2019 Google LLC.    
   SPDX-License-Identifier: Apache-2.0 -->

class MyPagingSource : PagingSource<Key, Value>() {
    override suspend fun load(params: LoadParams<Key>): LoadResult<Key, Value> {
        try {
            val result = api.requestPage(params.key)
            return Page(
                data = result.items,
                nextKey = result.nextKey
            )
        } catch(error: IOException) {
            return Error(error)
        }
    }
}

Para obtener información actualizada sobre Paging3, consulte la documentación y el laboratorio de códigos.

http://d.android.com/paging3

https://codelabs.developers.google.com/codelabs/android-paging/#0

Nota del traductor: como se menciona en el video, Paging3 es compatible con Paging2, por lo que puede actualizar con confianza (no soy responsable ...).

Inicio de la aplicación: inicializa los componentes cuando se inicia la aplicación

La biblioteca de clases App Startup proporciona una manera simple y eficiente de inicializar componentes cuando se inicia la aplicación, en lugar de definir un ContentProvider separado para cada componente que necesita inicializarse.

App Startup le permite definir inicializadores de componentes que comparten el mismo ContentProvider. Esto puede optimizar significativamente el tiempo de inicio de la aplicación.

<!-- Copyright 2019 Google LLC.    
   SPDX-License-Identifier: Apache-2.0 -->

class WorkManagerInitializer : Initializer<WorkManager> {
    override fun create(context: Context): WorkManager {
        val configuration = Configuration.Builder()
            .setMinimumLoggingLevel(Log.DEBUG)
            .build()
        WorkManager.initialize(context, configuration)
        return WorkManager.getInstance(context)
    }

    override fun dependencies() : List<Class<out Initializer<*>>> = emptyList()
}

Para obtener más información sobre AppStart, consulte la documentación oficial.

https://developer.android.com/topic/libraries/app-startup

Autocompletar NAME

Android 11 introdujo API de plataforma relacionadas con el teclado para mostrar sugerencias de autocompletar, como la administración de contraseñas. La API de Autocompletar de Jetpack hace que el teclado y el servicio de autocompletar sean más fáciles de usar esta función a través de InlineSuggestionUi.

El servicio Autocompletar puede proporcionar sugerencias confiables a través de él, y el teclado puede personalizar el estilo sugerido a través de él.

Animación más simple: animación básica y SeekableAnimatedVectorDrawable

Para implementar y probar la animación de manera más simple, hemos agregado dos nuevas bibliotecas: androidx.core: core-animation y androidx.core: core-animation-testing.

También presentamos una nueva API SeekableAnimatedVectorDrawable en la biblioteca androidx.vectordrawable.

core-animation trasplanta todas las funciones de las que depende Animator de Ice Cream Sandwich, como pausar / reanudar, arrastrar.

SeekableAnimatedVectorDrawable es una nueva alternativa arrastrable a AnimatedVectorDrawable (AVD) basada en la animación del núcleo. Utiliza el mismo formato que AVD y agrega funciones de arrastrar, pausar y reanudar.

Depurar la base de datos con el Inspector de base de datos

No traduciré este. Lo presenté en mi artículo hace dos meses. ¿Puedes consultar la base de datos y ver eso?

Compatibilidad con dispositivos WindowManger-better

WindowManager es una nueva biblioteca de clases agregada por Jetpack, diseñada para ayudar a los desarrolladores a adaptarse a varios dispositivos, como pantallas plegables. Proporciona soporte API unificado para la función WindowManger de las versiones nuevas y antiguas de la plataforma.

Se ha puesto en el mercado la versión inicial que admite diferentes tipos de dispositivos plegables, para que los desarrolladores puedan adaptarse. Para obtener más información, consulte este blog:

Admite nuevos factores de forma con la nueva biblioteca Jetpack WindowManager

https://medium.com/androiddevelopers/support-new-form-factors-with-the-new-jetpack-windowmanager-library-4be98f5450da

Código de muestra

https://github.com/android/user-interface-samples/tree/master/WindowManager

Nota del traductor: También hay un artículo relacionado sobre los Nuggets, puedes consultar: Jetpack WindowManager, ¡la solución de adaptación oficial para pantallas plegables de Android!

https://juejin.im/post/5ecb2e2f518825433e1fa377

MotionLayout, crea animaciones interactivas fluidas

MotionLayout hereda las ricas funciones de ConstraintLayout para ayudar a los desarrolladores de Android a administrar el movimiento complejo y la animación de componentes de ventana. Mediante MotionLayout, puede construir animaciones de transición entre ConstraintSets y puede integrar fácilmente animaciones de vistas comunes, como RecyclerView y ViewPager.

Android Studio 4.0 es compatible con Motion Editor, una herramienta gráfica para crear y obtener una vista previa de animaciones MotionLayout.

Actualizar la biblioteca de clases existente

Navegación

Navigation 2.3 agrega soporte para módulos de funciones dinámicas, lo que permite a los usuarios descargar solo los módulos necesarios en la aplicación, lo que reduce en gran medida el tamaño de Apk para la primera descarga.

Ahora, puede navegar a estos módulos como si fueran parte de la apk base. Además de permitir parámetros de consulta, Deep Link ahora admite acciones personalizadas y tipos de mímica.

El resultado devuelto tiene una nueva API, Navigation usa SavedStateHandle para pasar datos entre objetivos. Puede usar el BackStackEntry anterior y establecer el valor de retorno en él.

El nuevo TestNavHostController le ayuda a acceder a la pila de reserva y establecer el destino actual durante la prueba.

WorkManager

La última versión de WorkManager agrega soporte para tareas importantes y que requieren mucho tiempo y que deben mantenerse activas a través de los servicios de primer plano.

Para diagnosticar problemas en las tareas de WorkManager más fácilmente, hemos agregado la API de diagnóstico para usar adb para ver el estado de funcionamiento interno y la salida a logcat.

adb shell am broadcast \
 -a "android.work.diagnostics.REQUEST_DIAGNOSTICS" \
 -p "<your_app_package_name>"

Para ayudarlo a evitar errores comunes en el uso de WorkManager, hemos agregado algunas reglas de Lint para marcarlos.

Algunas otras actualizaciones de API incluyen: soporte para configurar y observar el progreso del trabajo; optimizar la API de consulta para el trabajo actual; mejorar el programador en ejecución.

Punto de referencia

La última versión alfa de la biblioteca Benchmark está integrada con la creación de perfiles de la CPU, de modo que puede analizar el punto de referencia y luego ver el método o el seguimiento muestreado directamente en Android Studio.

También agregamos soporte para el seguimiento de la asignación de memoria, para que pueda optimizar el tiempo dedicado a la asignación y reducir una gran cantidad de recolección de basura.

Permisos

Hemos introducido la nueva API ActivityResult para facilitar las solicitudes de permisos.

La nueva API usa RequestPermissionContract para reemplazar el método requestPermissions original, que simplifica enormemente el proceso de solicitud de permisos.

Al mismo tiempo, se proporciona un protocolo de seguridad de tipos para fines generales, como tomar fotografías y abrir documentos.

https://developer.android.com/training/basics/intents/result

CameraX

Las cámaras de los dispositivos Android son bastante diferentes y CameraX es compatible con el 90% de los dispositivos. Desde que CameraX entró en Beta en febrero del año pasado, nos hemos centrado en la confiabilidad para garantizar que la API funcione bien en una gran cantidad de dispositivos. El laboratorio de pruebas de CameraX ejecuta nuestro conjunto de pruebas automatizado en más de 400 millones de dispositivos activos.

La última versión de CameraX ha optimizado el componente PreviewView. Ahora puede manejar de manera confiable la interacción con el ciclo de vida de la aplicación y la interacción de la página. También optimiza de forma transparente su dispositivo. El uso de SurfaceView en la parte inferior del dispositivo es beneficioso para mejorar el rendimiento, reducir el almacenamiento en búfer y proporcionar eficiencia energética.

Para obtener más información, consulte la documentación oficial y los ejemplos de código.

https://developer.android.com/training/camerax

https://github.com/android/camera-samples

Seguridad

La biblioteca de clases de Jetpack Security proporciona interfaces de cifrado basadas en archivos seguras y fáciles de usar, como EncryptedFile y EncryptedSharedPreferences.

Jetpack Security utiliza las ventajas de Android KeyStore para proporcionar seguridad operativa y almacenamiento con soporte de hardware. La versión Release Candidate 2 ahora es compatible con la versión Marshmallow +, la versión 1.1.0 alpha es compatible con la versión Lollipop + y superior.

https://developer.android.com/jetpack/androidx/releases/security

AppCompat

AppCompat ha trasplantado una gran cantidad de elementos de la interfaz de usuario y funciones de plataforma, como el tema Material, la barra de herramientas y el tema oscuro. En la última versión, hemos agregado algunas reglas de Lint para permitirle distinguir mejor si el atributo proviene de Appcompat o del marco original, y asegúrese de usar el correcto. También hemos realizado mejoras sustanciales en la estabilidad del tema oscuro de AppCompat.

https://developer.android.com/jetpack/androidx/releases/appcompat

Webkit

Jetpack WebKit agregó una API en la versión 1.2 para forzar el soporte para el modo oscuro.

Cuando se inicia esta API, si el sitio web admite temas oscuros, WebView se procesará. Si no es compatible, la API obligará a modificar el color correspondiente.

https://developer.android.com/jetpack/androidx/releases/webkit

Jetpack Compose: un nuevo conjunto de herramientas de interfaz de usuario

El último kit de herramientas de interfaz de usuario moderno, Jetpack Compose, ha llegado a la versión Developer Preview 2.

Esta versión agrega muchas características nuevas: interactividad mutua con View, más componentes de Material UI, soporte para temas oscuros, nuevas pruebas de UI y API de animación, soporte básico de ConstraintLayout, administración de estado optimizada, flujo observable integrado, soporte RTL.

La vista previa de Android Studio ahora es interactiva y hay muchas optimizaciones de compilación.

https://developer.android.com/jetpack/compose

Al final

Una introducción rápida a las actualizaciones de Jetpack en los meses anteriores. Con más de 90 bibliotecas disponibles, también sabemos que es difícil para usted encontrar lo que necesita, por lo que rediseñamos el sitio web de Jetpack y agregamos un selector de API conveniente para ayudarlo a encontrar rápidamente una biblioteca Jetpack que pueda resolver el problema.

https://developer.android.com/jetpack


Si está más interesado en las nuevas tecnologías, preste atención a este número y publicaremos artículos prácticos más detallados más adelante.

La mayoría. La mayoría. La mayoría. Finalmente, aquí también comparto el PDF de aprendizaje de Android que he recopilado y organizado. Hay una explicación detallada de Jetpack. Espero que pueda ayudarte a aprender a mejorar y ahorrarte tiempo buscando materiales en Internet. Puedes compartir con amigos que te rodean para aprender juntos

Los amigos que lo necesiten pueden mudarse aquí para recibir: PDF de aprendizaje de Android + video de arquitectura + documentos de entrevistas + notas de origen

Supongo que te gusta

Origin blog.csdn.net/River_ly/article/details/106739356
Recomendado
Clasificación