Recuerden agregar la dependencia de ViewModel en su archivo build.gradle de la app
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0"
Arquitectura
Patrones de Diseño en Android: Soluciones y Aplicación Práctica
Fundamentos de Arquitectura de Software y su Impacto en Proyectos
Arquitecturas en Android: MVC y MVVM
Desarrollo de una Billetera Virtual con Git y Android Studio
Arquitectura MVP: Modelo, Vista y Presentador en Desarrollo de Software
Arquitectura MVP: Implementación en Proyectos Android
Implementación de Arquitectura MVP en Android
Implementación de Loaders en Arquitectura MVP con Android
Arquitectura MVVM en Android: Comunicación entre Capas
Patrones de diseño
Patrones de Diseño en Android: Creacionales, Estructurales y Comportamiento
Patrones de diseño creacionales
Implementación del Patrón Singleton en Kotlin para Android
Patrón Singleton en Kotlin para Gestión de Estados en Android
Patrón Builder en Android: Creación de Objetos Complejos
Implementación del Patrón Builder en Clases de Usuario
Funciones de Alcance en Kotlin: Uso de Apply
Patrón Factory: Creación y Uso en Desarrollo de Software
Patrones de diseño estructurales
Patrón de Diseño Adaptador para Transformar Datos en Clases Java
Aplicación del Patrón Proxy en Transferencias Seguras
Patrón de Diseño Fast Add en Aplicaciones Android
Patrones de comportamiento
Patrones de Diseño: Implementación del Patrón Observer en Proyectos
Patrón Observer en Android: Implementación y Uso Práctico
Patrón Comando: Implementación y Gestión de Comandos en Kotlin
Comandos para Guardar y Leer Archivos en Android
Ejecución de Comandos y Debugging en Android Studio
Bonus: Architecture Components
Componentes de Android Jetpack para Mejora de Aplicaciones
Implementación de LiveData en Android para Ciclo de Vida
Implementación de Room en Android para Gestión de Base de Datos
Creación de Entidades y DAO en Base de Datos con Room en Kotlin
Conexión y manejo de transferencias en Room Database
Implementación de ViewModel en Arquitectura MVVM en Android
Bonus: Custom View
Creación de Vistas Personalizadas en Android con Custom View
Conclusiones
Patrones de Diseño y Componentes de Texto en Android
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
El manejo del ciclo de vida en desarrollo de aplicaciones es crucial para evitar la pérdida de datos importantes, especialmente cuando ocurren eventos como rotaciones de pantalla. El modelo de arquitectura ViewModel en Android se encarga de gestionar estas situaciones al mantener el estado de las variables a pesar de los cambios de configuración. La clase ViewModel se integra en el ciclo de vida de las activities y fragments para proporcionar un manejo eficiente de los datos y del estado. ViewModel actúa como un intermediario entre los datos de la interfaz de usuario y la parte lógica del aplicativo.
Para implementar un ViewModel, primero debes crear una clase que extienda de ViewModel
. En este contexto, puedes utilizar la librería Android Architecture Components, lo que te permitirá acceder a métodos como onCleared
, que se llama cuando el ViewModel ya no es necesario y los datos deben ser liberados.
class LoanViewModel : ViewModel() {
// Definición de variables LiveData
private val _percentLiveData = MutableLiveData<Int>()
val percentLiveData: LiveData<Int> get() = _percentLiveData
private val _loansListLiveData = MutableLiveData<List<Loan>>()
val loansListLiveData: LiveData<List<Loan>> get() = _loansListLiveData
// Método para cambiar los valores
fun changeValues() {
_percentLiveData.value = 100
_loansListLiveData.value = emptyList()
}
}
Una vez que tengas el ViewModel configurado, debes conectarlo con la interfaz de usuario o vista. Esto se realiza suscribiéndose a los objetos LiveData del ViewModel de modo que la vista pueda reaccionar a los cambios en los datos.
class LoanFragment : Fragment() {
private lateinit var viewModel: LoanViewModel
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
viewModel = ViewModelProvider(this).get(LoanViewModel::class.java)
// Observación de LiveData desde el ViewModel
viewModel.percentLiveData.observe(viewLifecycleOwner, Observer { percent ->
// Actualizar la UI con el nuevo porcentaje
percentageTextView.text = "$percent%"
})
viewModel.loansListLiveData.observe(viewLifecycleOwner, Observer { loans ->
// Actualizar los datos del adaptador
adapter.submitList(loans)
})
return inflater.inflate(R.layout.fragment_loan, container, false)
}
}
Persistencia durante el ciclo de vida: ViewModel conserva los datos del aplicativo durante cambios de configuración como la rotación de pantalla.
Arquitectura limpia y desacoplada: Al separar la lógica de la UI del manejo de datos, ViewModel permite mantener una estructura de código más ordenada y fácil de mantener.
Delegación eficiente: Se encarga de manejar eventos de la UI y actualizar solo cuando sea necesario.
Seguridad en multihilo: Está diseñado para trabajar en estrecha colaboración con LiveData, lo cual garantiza notificaciones reactivas de cambios en los datos, lo que facilita el manejo concurrente de diferentes eventos de UI.
El empleo de ViewModel en la arquitectura de las aplicaciones Android es fundamental para quienes buscan eficiencia y organización en el desarrollo, garantizando aplicaciones robustas y adaptables a futuros cambios.
Aportes 7
Preguntas 0
Recuerden agregar la dependencia de ViewModel en su archivo build.gradle de la app
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0"
ViewModel
Es una clase que nos ayuda a manejar el ciclo de vida de un contexto, dándonos sólo un método (onCleared()) donde deberíamos liberar recursos.
View esta suscrita a ViewModel, es decir que no necesitan contratos
En versiones recientes de Viewmodel, para inicializar una instancia a un ViewModel ya no es necesario utilizar el llamado a ViewModelProviders. Ahora podemos inicializar el ViewModel en la misma línea en la que lo declaramos:
class MainActivity: AppCompatActivity() {
private val pushViewModel: PushViewModel by viewModels()
...
}
Se diseñó la clase ViewModel a fin de almacenar y administrar datos relacionados con la IU de manera optimizada para los ciclos de vida. La clase ViewModel permite que los datos sobrevivan a cambios de configuración, como las rotaciones de pantallas.
Documentacion oficial de android: https://developer.android.com/topic/libraries/architecture/viewmodel#kotlin
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?