Componentes de la arquitectura Jetpack en Android

Android Jetpack es un conjunto de componentes de software, bibliotecas, herramientas y orientación para ayudar a desarrollar aplicaciones sólidas de Android . Lanzado por Google en 2018 , Jetpack comprende bibliotecas de soporte de Android existentes, componentes de arquitectura de Android con una adición de la biblioteca Android KTX como una sola entidad modular. Hoy en día, casi el 99 % de las aplicaciones presentes en Google Play Store utilizan las bibliotecas de Android Jetpack. Además, para hacer frente a los cambios/actualizaciones en los datos y el ciclo de vida de las aplicaciones, Google introdujo componentes de arquitectura. Este artículo explica en detalle todas y cada una de las bibliotecas de este componente. Jetpack consta de una amplia colección de bibliotecas que se construyen de manera que funcionen juntas y creen aplicaciones móviles sólidas. Sus componentes de software se han dividido en 4 categorías:

  1. Componentes de cimentación
  2. Componentes de arquitectura
  3. Componentes de comportamiento
  4. Componentes de la interfaz de usuario

Además, los componentes de la arquitectura podrían clasificarse de la siguiente manera: 

  1. Habitación
  2. administrador de trabajo
  3. Ciclo vital
  4. Ver modelo
  5. Datos en tiempo real
  6. Navegación
  7. Paginación
  8. El enlace de datos

Jetpack Architecture Components in Android

Android Jetpack con su componente de arquitectura define algunos principios clave que se deben seguir como un camino seguro para desarrollar aplicaciones móviles buenas y sólidas. No es compatible con ningún patrón de arquitectura en particular, pero sugiere una clara separación de las preocupaciones y el control de la interfaz de usuario del modelo. Al seguir estas reglas, los desarrolladores pueden evitar problemas relacionados con el ciclo de vida y será fácil probar y mantener la aplicación.

Los siguientes son los elementos del componente de arquitectura y sus responsabilidades

  1. La capa Vista está representada por Actividad / Fragmento . Solo se ocupan de la interacción del usuario y observan y exhiben el elemento LiveData que se toma del ViewModel .
  2. ViewMode l controla el ciclo de vida de View y es responsable de mantener la coherencia de los datos durante los cambios de configuración en el dispositivo u otros eventos del ciclo de vida de Android.
  3. El Repositorio es una clase sin una implementación adecuada y es responsable de recopilar datos de todas las fuentes. Maneja todos los datos y los transforma en LiveData observables y los hace accesibles para ViewModel.
  4. Room es una biblioteca de mapeo SQLite que supera los desafíos de la base de datos SQLite, como escribir códigos repetitivos y verificar consultas en tiempo de compilación. Tiene la capacidad de devolver consultas directamente con LiveData observable .

Formas de incluir bibliotecas de Android Jetpack en la aplicación

  • Agregue el repositorio de Google en el archivo build.gradle del proyecto de la aplicación.

script de compilación {

   repositorios {

       Google()

       mavenCentral()

   }

  • Todos los componentes de Jetpack están disponibles en el repositorio de Google Maven, inclúyelos en el archivo build.gradle

todos los proyectos {

   repositorios {

       Google()

       mavenCentral()

   }

}

Componentes de arquitectura

1. Componente de la habitación

SQLite cumple el requisito de una base de datos en Android desde el principio. Sin embargo, viene con algunos inconvenientes graves, como no verificar las consultas en tiempo de compilación, no guarda los objetos Java antiguos (comúnmente conocidos como POJO s). Los desarrolladores también necesitan escribir una gran cantidad de código repetitivo para que la base de datos SQLite funcione en el entorno del sistema operativo Android. El componente Room entra en escena como una biblioteca de mapeo de objetos de SQLite que supera todos los desafíos mencionados. Room convierte las consultas directamente en objetos, verifica los errores en las consultas en el momento de la compilación y también es capaz de conservar los POJO de Java. 

Además, produce resultados/observables de LiveData a partir del resultado de la consulta dada. Debido a esta naturaleza versátil del componente Room, Google admite oficialmente y recomienda a los desarrolladores que lo utilicen. La Sala consta de los siguientes subcomponentes:

  1. Entidad: Es la clase anotada para la cual la Sala crea una tabla dentro de la base de datos. El campo de la clase representa columnas en la tabla.
  2. DAO (Objeto de Acceso a Datos): Es el encargado de definir los métodos para acceder a la base de datos y realizar operaciones.
  3. Base de datos: es una clase abstracta que amplía la clase RoomDatabase y sirve como punto de acceso principal a los datos relacionales de la aplicación subyacente.

Room Component

Ventajas del componente de la habitación:

  • Reducir el código repetitivo
  • Simplifica el mecanismo de acceso a la base de datos.
  • Migraciones fáciles de implementar
  • La capacidad de prueba es alta

2. Administrador de trabajo

La API de WorkManager proporciona una solución óptima para administrar las tareas en segundo plano en Android que son diferibles (se pueden ejecutar más tarde y siguen siendo útiles) y garantizadas (se ejecutan incluso si el dispositivo se reinicia) por naturaleza. Su capacidad para cubrir la función de ahorro de energía de Android y la capacidad de funcionar con o sin Google Play Services son las razones de su popularidad entre los desarrolladores. Además, también es retrocompatible con el nivel 14 de API. 

La capacidad de los dispositivos Android para descargar un archivo/documento en fragmentos, es decir, ocasionalmente (como el usuario reanuda la descarga según la disponibilidad de la red WiFi) y la función de guardar el estado descargado incluso si el dispositivo se reinicia solo es posible gracias a la API de WorkManager . Su ejecución de tareas depende del orden de las requests realizadas por el usuario y para cada solicitud de trabajo, devuelve el estado que se muestra en la interfaz de usuario del dispositivo.

WorkManager

Ventajas del componente WorkManager:

  • Proporciona compatibilidad con versiones anteriores.
  • Es posible programar y enstringr tareas
  • Los usuarios pueden realizar un seguimiento del estado de las tareas.

3. Componentes conscientes del ciclo de vida

Los detalles del estado del ciclo de vida de un componente de Android se almacenan en la clase Lifecycle y permite que otros componentes/objetos observen este estado. Un componente de Android reconoce el ciclo de vida si tiene la capacidad de detectar el cambio en el estado del ciclo de vida de otros componentes y responder en consecuencia. La gestión adecuada de los ciclos de vida de las aplicaciones es una tarea desafiante para los desarrolladores, ya que puede provocar problemas graves, como fugas de memoria y bloqueos de aplicaciones. El paquete android.arch.lifecycle facilita a los desarrolladores la gestión de los ciclos de vida adjuntos a los componentes directamente por el sistema. Al implementar la interfaz LifecycleObserver dentro de la clase deseada, se puede configurar para que tenga en cuenta el ciclo de vida. 

Lifecycle-Aware Components

Hay 2 formas de crear Actividad / Fragmento que son conscientes del ciclo de vida:

  • Ampliar una LifecycleActivity o LifecycleFragment

clase MainActivity : LifecycleActivity() {

   anula la diversión onCreate (savedInstanceState: ¿Paquete?) {

       super.onCreate (estado de instancia guardado)

       setContentView(R.diseño.actividad_principal)

   }

}

  • Conecte eventos de LifecycleObserver y Lifecycle a través de anotaciones

clase MainActivityObserver: LifecycleObserver, AnkoLogger {

  @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)

   diversión onResume() {

      info(“enReanudar”)

  }

   @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)

   diversión en pausa() {

       información («en pausa»)

   }

}

Ventajas de los componentes conscientes del ciclo de vida:

  • Ayuda en la creación de componentes de aplicación organizados
  • Facilidad en las pruebas y el mantenimiento de los componentes.
  • Menos requisito de código para ejecutar tareas

4. Ver modelo

ViewModel es una de las clases más críticas del componente de arquitectura Android Jetpack que admite datos para componentes de interfaz de usuario. Su propósito es almacenar y administrar datos relacionados con la interfaz de usuario. Además, su función principal es mantener la integridad y permite el servicio de datos durante los cambios de configuración, como las rotaciones de pantalla. Cualquier tipo de cambio de configuración en los dispositivos Android tiende a recrear toda la actividad de la aplicación. Significa que los datos se perderán si no se guardaron y restauraron correctamente de la actividad que se destruyó. Para evitar estos problemas, se recomienda almacenar todos los datos de la interfaz de usuario en ViewModel en lugar de una actividad. 

ViewModel

Una actividad debe extender la clase ViewModel para crear un modelo de vista:

clase MainActivityViewModel : ViewModel() {

………

……..

}

Ventajas del componente ViewModel:

  • Ayuda en la gestión de datos durante los cambios de configuración
  • Reducir los errores y bloqueos de la interfaz de usuario
  • Las mejores prácticas para el diseño de software

5. Datos en vivo

Este componente es una clase de titular de datos observable, es decir, el valor contenido se puede observar. LiveData es un componente consciente del ciclo de vida y, por lo tanto, realiza sus funciones de acuerdo con el estado del ciclo de vida de otros componentes de la aplicación. Además, si el estado del ciclo de vida del observador está activo, es decir, INICIADO o REANUDADO, solo entonces LiveData actualiza el componente de la aplicación. LiveData siempre verifica el estado del observador antes de realizar cualquier actualización para asegurarse de que el observador debe estar activo para recibirlo. Si se destruye el estado del ciclo de vida del observador, LiveData es capaz de eliminarlo y, por lo tanto, evita pérdidas de memoria. Facilita la tarea de sincronización de datos.

LiveData

Es necesario implementar métodos onActive y onInactive por LiveData:

clase LocationLiveData (contexto: Contexto)

   : LiveData<Ubicación>(), AnkoLogger, LocationListener {

   valor privado locationManager: LocationManager =

           context.getSystemService(Context.LOCATION_SERVICE) como LocationManager

   anular la diversión onActive() {

       información («onActive»)

       locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0f, este)

   }

   anular la diversión onInactive() {

       info(“onInactive”)

       locationManager.removeUpdates(esto)

   }

   // ….

}

Para observar un método de observador del componente LiveData (LifecycleOwner, Observer<T>) se llama:

diversión observarUbicación() {

       val ubicación = LocationLiveData (este)

       ubicación.observar(esto,

               Observador { ubicación ->

                   info(“ubicación: $ubicación”)

               })

   }

}

Ventajas del componente LiveData:

  • La interfaz de usuario se actualiza según el cambio apropiado en los datos
  • Elimina las actividades detenidas o destruidas que reducen la posibilidad de que la aplicación se bloquee.
  • No hay fugas de memoria ya que LiveData es un componente consciente del ciclo de vida.

6. Componente de navegación

El componente de navegación de la arquitectura de Android es un marco para diseñar la interfaz de usuario en la aplicación. Los desarrolladores pueden seguir la arquitectura de la aplicación de actividad única para estructurar la interfaz de usuario de la aplicación. La navegación gestiona la complejidad relacionada con las transacciones de fragmentos en la aplicación. También facilita a los desarrolladores mostrar las transiciones y el comportamiento de retroceso . 

Mediante el uso del componente de navegación, se pueden obtener todos los beneficios de otros componentes de la arquitectura, como Lifecycle y ViewModel . Ayuda a implementar estilos de navegación básicos, como simples clics de botones , hasta patrones de navegación complejos, como la barra de aplicaciones y el cajón de navegación . Además, también admite enlaces profundos y ayudantes que permiten la conexión de este componente con el cajón de navegación y la navegación inferior .  

Ventajas del componente de navegación:

  • Facilite la transición a través de la visualización animada
  • Admite enlaces profundos
  • Manejar transacciones de fragmentos
  • Admite patrones de navegación comunes y complejos

7. Paginación

Al desarrollar una aplicación para Android, es muy importante organizar el proceso de carga de datos. En su mayoría, las aplicaciones muestran una actividad/fragmento a la vez y, por lo tanto, requieren cargar y mostrar solo una pequeña sección de datos. Sin embargo, al mismo tiempo, la aplicación está procesando un gran conjunto de datos que actualmente no tiene utilidad. Por lo tanto, es un área crítica de la aplicación que debe manejarse, de lo contrario, puede provocar el desperdicio de la batería del dispositivo y el ancho de banda de la red.  

La biblioteca de paginación del componente de arquitectura de Android proporciona la solución óptima a estos problemas. Esta biblioteca proporciona la posibilidad de cargar los datos de la aplicación lentamente y con cautela. Además, la paginación es una biblioteca muy cooperativa para aquellas aplicaciones en las que los datos mostrados se actualizan continuamente, ya que proporciona una lista de sitios ilimitados , así como listas grandes pero limitadas . Las siguientes son las tres formas comunes de cargar datos a través de la biblioteca de paginación:

  1. Los datos de carga se almacenan en la base de datos del dispositivo
  2. Cargar datos a través de una red sirviendo como caché para la base de datos
  3. Cargue datos sirviendo desde el servidor back-end

Ventajas del componente de paginación: 

  • Fácil de integrar con Recycler View para mostrar un gran conjunto de datos.
  • Compatible con LiveData y RxJava para actualizar los datos de la interfaz de usuario
  • Carga datos gradualmente con precaución

8. Enlace de datos

La biblioteca de vinculación de datos es una biblioteca de soporte que proporciona la característica de vincular los componentes de la interfaz de usuario en una actividad/fragmento a las fuentes de datos de la aplicación. La biblioteca lleva a cabo esta tarea de enlace en un formato declarativo y no de forma programática. A continuación se muestra un ejemplo para comprender el funcionamiento de esta biblioteca con precisión:

Para encontrar un widget TextView y vincularlo a la propiedad userName de la variable ViewModel, se llama al método findViewById() :

TextView textView = findViewById(R.id.sample_text);

textView.setText(viewModel.getUserName());

Después de usar la biblioteca de enlace de datos, el código anterior cambia al usar la expresión de asignación de la siguiente manera:

<Vista de texto

 android:text=”@={modelo de vista.nombre de usuario}” />

Ventajas del componente de enlace de datos:

  • Haga que el código sea más simple y fácil de mantener mediante la eliminación de marcos de interfaz de usuario llamados en la actividad.
  • Permite que las clases y los métodos observen cambios en los datos.
  • Permite hacer objetos y rellenos que funcionan como colección observable.

Fragmento de código para agregar componentes de arquitectura jetpack como LiveData y ViewModel:

dependencias {

  def ciclo_de_vida_versión = “2.3.1”

  implementación “androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version”

  implementación «androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version»

  …

}

Publicación traducida automáticamente

Artículo escrito por RISHU_MISHRA y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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