Este artículo describe la idea detrás del patrón de diseño de Data Binding y MVVM y sus componentes. Si desea experimentar con él de forma práctica, abra un proyecto antiguo con código espagueti. Si no tiene uno, obtendrá uno de GitHub . Luego, intente usar los componentes de MVVM presentados durante este artículo.
En cierto modo, el desarrollo de software no ha cambiado mucho en la última década. los desafíos esenciales siguen siendo los mismos:
- Escribiendo código limpio.
- Tener una arquitectura versátil.
- Probando el código.
- Creando una excelente experiencia de usuario.
- Desarrollar funciones más rápido de lo que la gestión de productos puede considerarlas 🙂
Todos estos problemas tuvieron respuesta cuando Android entró al mercado. Los desarrolladores de aplicaciones web y de escritorio ya tenían un dominio de conocimiento para escribir interfaces de usuario. Esas soluciones también funcionaron para Android, pero estaban lejos de ser ideales.
Inicialmente, Android admitía Java y las aplicaciones generalmente se implementaban utilizando MVC (Model View Controller) . Diez años después, está Kotlin… y está MVVM junto con Data Binding. Por lo tanto, había sido un viaje extenso durante esos diez años, ¡así que vamos a ponernos al día!
Uso de enlace de datos
El enlace de datos como un solo término se refiere a la técnica que conecta los datos de los consumidores y usuarios finales y luego los mantiene sincronizados. La biblioteca de vinculación de datos de Android permite al desarrollador mantener la interfaz de usuario dentro de los archivos XML de diseño y generar código a partir de ellos. La biblioteca también hace el trabajo de sincronizar la vista con los datos que provienen del modelo de vista. Para agregar el enlace de datos a su proyecto de Android Vanilla, deberá agregar las siguientes líneas al archivo build.gradle de su aplicación:
android { ... dataBinding { enabled = true } }
Después de hacer que el elemento dataBinding sea ‘verdadero’, deberá agregarlo a su archivo XML como:
XML
<layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <data> <variable name="user" type="com.geeksforgeeks.example" /> </data> <ConstraintLayout... /> <!-- Your UI layout's root element --> </layout>
Después de agregar el código anterior en su XML, puede usar LiveData para notificar a la interfaz de usuario sobre los cambios de datos:
A diferencia de los objetos que implementan elementos observables como: campos de texto observables, los objetos de datos en vivo realizan el ciclo de vida de los observadores suscritos a los cambios de información. estos datos permiten muchos beneficios, que se explican dentro de las ventajas de usar LiveData. En Android Studio versión 3.1 y posteriores, reemplazará los campos observables con objetos LiveData en su código de vinculación de datos.
Java
class ViewModelActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { // Inflating the view to obtain an instance UserBinding binding = DataBindingUtil.setContentView(this, R.layout.gfg); // Specifying the present (current) activity as the parent binding.setLifecycleOwner(this); } }
Kotlin
class ViewModelActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { // Inflating the view to obtain an instance val binding: UserBinding = DataBindingUtil.setContentView(this, R.layout.gfg) // Specifying the present (current) activity as the parent binding.setLifecycleOwner(this) } }
¿Por qué vincularse a LiveData?
Las ventajas de emplear componentes conscientes del ciclo de vida como LiveData incluyen:
- Sin bloqueos gracias a las actividades detenidas. Si el ciclo de vida del observador está inactivo, como cuando una actividad está dentro de la pila de actividades, entonces no recibe ningún evento LiveData.
- Cambios de configuración adecuados. Si una actividad o fragmento se recrea gracias a un cambio de configuración (por ejemplo, rotación del dispositivo, cambios de ángulo, etc.), recibe inmediatamente los datos disponibles más recientes.
- Sin fugas de memoria. No tiene que deshacerse de las suscripciones manualmente. Los observadores hacen sus maletas cuando se destruye su ciclo de vida asociado.
Una palabra de advertencia
Tenga cuidado de no introducir bucles infinitos cuando utilice el enlace de datos bidireccional. Cuando el usuario cambia un atributo, se nombra la táctica anotada como @InverseBindingAdapter . Esto, a su vez, llamaría a la táctica anotada @BindingAdapter , lo que podría desenstringr otra llamada a la táctica anotada @InverseBindingAdapter , y así sucesivamente. Por esta razón, es importante interrumpir posibles bucles infinitos comparando valores nuevos y antiguos dentro de los métodos anotados @BindingAdapter.
Algunas reflexiones finales
El ciclo de vida de los componentes de Android es complejo y puede ser complicado administrarlo manualmente, ya que mantener la interfaz de usuario actualizada con las fuentes de datos, por lo tanto, introducir LiveData, puede ser una gran intensificación en la administración del ciclo de vida. Agregar enlace de datos al proyecto puede hacer que el código sea más conciso y reactivo en el sentido de que los cambios en las fuentes de datos a menudo se propagan automáticamente a la interfaz de usuario teniendo en cuenta la configuración y el estado del ciclo de vida. Sin embargo, el uso de la Biblioteca de vinculación de datos no debe limitarse a establecer únicamente las propiedades de un modelo de conocimiento en los campos de texto. La vinculación a LiveData con vinculación unidireccional y bidireccional le permitirá formar lo más importante del patrón Observer y la conciencia del ciclo de vida.
Publicación traducida automáticamente
Artículo escrito por therebootedcoder y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA