Una breve introducción a Jetpack, una biblioteca de desarrollo estandarizada de entrevistas para Android

Composición de Jetpack

Composición de Jetpack

Como puede ver en la figura, la composición de Jetpack se divide en cuatro partes: Arquitectura, Fundación, Comportamiento, UI

La arquitectura incluye principalmente:

  • Encuadernación de fecha
  • Ciclos de vida
  • Datos en tiempo real
  • Navegación
  • Paginación
  • Habitación
  • ViewModel
  • WorkManager

El enlace de datos

DataBinding resuelve el problema de coherencia de las llamadas a vistas.

Al vincular los datos observables en el diseño, después de que se establece el contenido de los datos observados vinculados, se notifica al control que actualice el contenido de los datos.

 

¿Qué son los ciclos de vida?

Los ciclos de vida resuelven principalmente el problema de coherencia de la gestión del ciclo de vida. Anteriormente, la gestión del ciclo de vida dependía del mantenimiento manual. Por ejemplo, GpsManager necesitaba activar, desvincular y detener cada página de actividad utilizada. Si hay demasiadas páginas de actividad, es fácil causar problemas.

Lifecycles encapsula todas las operaciones complejas de la gestión del ciclo de vida en la clase base de LifeCycleOwner (como la clase base de la actividad del controlador de vista) a través del método de plantilla y el modo de observador, ahorrándole al desarrollador la molestia de escribir manualmente. Los desarrolladores pueden llamar directamente a getLifecycle (). AddObserver (GpsManager.getInstance ()) en la subclase para darse cuenta de la conciencia del ciclo de vida de LIfeCycleOwner.

 

¿Qué es LiveData?

LiveData sigue el concepto de desarrollo estandarizado del estado de distribución de la única fuente confiable , por lo que es difícil rastrear y solucionar problemas en el proceso de desarrollo rápido, y se minimiza la probabilidad de problemas impredecibles.

La única fuente de confianza es un componente de datos cuyo ciclo de vida es independiente del controlador de vista. Por lo general, es un singleton o ViewModel. ViewModel también se puede considerar como un singleton, un pseudo singleton implementado por el patrón de fábrica.

 

¿Qué es la navegación?

Navigation es una biblioteca y un complemento para simplificar la navegación de Android. La navegación se puede utilizar para gestionar el cambio de Fragmento, y el proceso interactivo de la aplicación se puede ver visualmente.

Ventajas de la navegación

  1. El estándar oficial maneja el cambio de fragmentos.
  2. Manejar correctamente el avance y retroceso de Fragmento de forma predeterminada
  3. Proporcionar recursos estandarizados para transiciones y animaciones.
  4. Puede realizar y manejar enlaces profundos
  5. Puede enlazar Toolbar, BottomNavigationView y ActionBar
  6. SafeArgs (complemento de Gradle) proporciona seguridad de tipos al pasar datos
  7. Soporte ViewModel

 

Paginación

Ayude a los desarrolladores a cargar y mostrar pequeños datos a la vez. La carga de parte de los datos a pedido puede reducir el uso del ancho de banda de la red y los recursos del sistema.

 

Habitación

La biblioteca de persistencia de sala proporciona una capa de abstracción en SQLite para ayudar a los desarrolladores a acceder a las bases de datos SQLite de manera más amigable y sin problemas.

 

ViewModel

La existencia de ViewModel es principalmente para resolver los problemas de gestión de estado y comunicación de páginas . Cuando se reconstruye el controlador de vista, el estado ligero se puede almacenar y restaurar mediante la serialización a través de onSaveInstanceState de la clase base del controlador de vista. Pero para el estado de peso pesado, como la recopilación de datos devuelta por la solicitud de red, se puede almacenar en ViewModel con un ciclo de vida más largo que el controlador de vista, de modo que se puede restaurar directamente desde ViewModel, que es un método de serialización ineficiente e ineficiente.

 

WorkManager

Incluso si la aplicación se cierra o el dispositivo se reinicia, es fácil programar las tareas asincrónicas diferibles que se espera que se ejecuten.

 

La fundación incluye principalmente:

  • AppCompat
  • Android KTX
  • Multidex
  • Prueba

AppCompat

Se proporciona una serie de API que comienzan con AppCompat para que sean compatibles con versiones inferiores del desarrollo de Android.

 

Android KTX

Android KTX es una extensión de código abierto de Google diseñada para hacer que el código Kotlin en Android sea más conciso, mejorando así la eficiencia del desarrollo y la experiencia del usuario.

Caso de uso:

1. Convertir cadena a URI

// Kotlin
val uri = Uri.parse(uriString)

// android KTX
val uri = uriString.toUri()

2 、 Preferencias compartidas

// kotlin
sharedPreferences.edit()
    .putBoolean("key", value)
    .apply()

// KTX
sharedPreferences.edit {
    putBoolean("key", value)
}

3. Ver el seguimiento de preDraw

// kotlin
view.viewTreeObserver.addOnPreDrawListener(
    object : ViewTreeObserver.OnPreDrawListener {
        override fun onPreDraw(): Boolean {
            viewTreeObserver.removeOnPreDrawListener(this)
            actionToBeTriggered()
            return true
        }
    })

// KTX
view.doOnPreDraw {
     actionToBeTriggered()
}

Multidex (lanzado en Android 5.0)

Motivo de uso: un archivo Dex en Android puede almacenar hasta 65536 métodos, que es un rango de tipo corto. Sin embargo, a medida que el número de métodos de aplicación sigue aumentando, cuando el archivo Dex supera el número de 65536 métodos, se producirá una excepción al empaquetar, por lo que se introduce Multidex.

  • Al empaquetar, divida una aplicación en múltiples dex, por ejemplo: classes.dex, classes2.dex, classes3.dex ..., al cargar, agregue estos dex al arreglo correspondiente de DexPathList, lo que resuelve la limitación del número de métodos.
  • Después de Andorid 5.0, la máquina virtual ART es compatible con MultiDex.
  • Antes de Andorid 5.0, el sistema solo cargaba una dex principal y la otra dex usaba MultiDex para cargar.

Instrucciones:

1. minSdkVersion es 21 o superior

android {
    defaultConfig {
        ...
        minSdkVersion 21 
        targetSdkVersion 26
        multiDexEnabled true
    }
    ...
}

2. minSdkVersion es 20 o menos

android {
    defaultConfig {
        ...
        minSdkVersion 15 
        targetSdkVersion 26
        multiDexEnabled true
    }
    ...
}

dependencies {
  compile 'com.android.support:multidex:1.0.3'
}

Definir el código de la aplicación relacionado (dos métodos)

// 继承 MultiDexApplication
public class MyApplication extends MultiDexApplication { ... }


// 或者 在Application中添加 MultiDex.install(this);
public class MyApplication extends Application {
  @Override
  protected void attachBaseContext(Context base) {
     super.attachBaseContext(base);
     MultiDex.install(this);
  }
}

 

Prueba

Marco de prueba de Android para pruebas de interfaz de tiempo de ejecución y unidad.

 

El comportamiento incluye principalmente:

  • Gestor de descargas
  • Medios y reproducción
  • Permisos
  • Notificaciones
  • Compartiendo
  • Rebanadas

 

Gestor de descargas

Puede manejar descargas HTTP de larga duración y reintentar las descargas después de una falla o cambio de conexión y reinicio del sistema.

Medios y reproducción

API compatible con versiones anteriores para reproducción y enrutamiento de medios (incluido Google Cast).

Permisos

API de compatibilidad para comprobar y solicitar permisos de aplicaciones.

Notificaciones

Proporciona una API de notificación compatible con versiones anteriores, admite Wear y Auto.

Compartiendo

Proporciona una operación de uso compartido adecuada para la barra de operaciones de la aplicación.

Rebanadas

Cree elementos de interfaz flexibles que puedan mostrar datos de la aplicación fuera de la aplicación.

Slices es una extensión del Asistente de Google. Google espera que los usuarios puedan acceder rápidamente a una determinada función en la Aplicación. Por ejemplo, si le dices al Asistente de Google que quieres ir a casa, es posible que antes solo haya opciones Didi y Uber. , Pero después de la introducción de Slices, se mostrará una lista de datos más detallada, como la distancia a casa, cuánto dinero y si tomar un taxi inmediatamente debajo del elemento Didi.

 

La interfaz de usuario incluye principalmente:

  • Animación y transición
  • Automático, TV y desgaste
  • Emoji
  • Fragmento
  • Diseño
  • Paleta

Paleta

La paleta es similar a una herramienta de paleta: de acuerdo con el mapa de bits entrante, se extrae el color principal, lo que hace que la imagen y el color coincidan más y la interfaz esté más coordinada.

Los colores que Palette puede extraer son los siguientes:

  1. Vibrante
  2. Oscuro vibrante (oscuro vibrante)
  3. Luz vibrante (luz vibrante)
  4. Silenciado (suave)
  5. Oscuro silenciado (color oscuro suave)
  6. Luz apagada (color suave y brillante)

Hay cuatro métodos para crear un objeto Palette. Debe pasar el objeto Bitmap. Los dos primeros a continuación son métodos síncronos y los dos últimos son métodos asincrónicos.

  1. generar (mapa de bits de mapa de bits)
  2. generar (mapa de bits mapa de bits, int numColors)
  3. generateAsync (mapa de bits de mapa de bits, detector PaletteAsyncListener)
  4. generateAsync (mapa de bits de mapa de bits, int numColors, oyente final de PaletteAsyncListener)

Después de obtener el objeto Palette, puede obtener los objetos Swatch correspondientes a los 6 colores

  1. Palette.getVibrantSwatch ()
  2. Palette.getDarkVibrantSwatch ()
  3. Palette.getLightVibrantSwatch ()
  4. Palette.getMutedSwatch ()
  5. Palette.getDarkMutedSwatch ()
  6. Palette.getLightMutedSwatch ()

El objeto Swatch es una clase interna de Palette, correspondiente a los siguientes métodos para obtener el valor del color

  1. getPopulation (): el número de píxeles en la muestra
  2. getRgb (): valor RBG del color
  3. getHsl (): valor HSL del color
  4. getBodyTextColor (): el valor de color del texto del cuerpo
  5. getTitleTextColor (): el valor de color del texto del título

 

Supongo que te gusta

Origin blog.csdn.net/nsacer/article/details/108528123
Recomendado
Clasificación