Arquitectura MVVM y ViewModel en Android con Kotlin
Separa interfaz, estado de pantalla y acceso a datos para facilitar pruebas.
Organizar una pequeña app en UI, ViewModel y repositorio.
Antes de comenzar
Parte de un proyecto de prueba o de una copia de trabajo de tu aplicación. Revisa versiones, permisos y dependencias en los enlaces oficiales del final: las plataformas Android y los servicios de Google pueden actualizar sus requisitos.
El objetivo de esta guía es aplicar un proceso concreto y comprobar su resultado. Documenta cualquier cambio relevante para poder mantenerlo y, cuando corresponda, medir sus efectos con datos.
Cómo hacerlo
Define primero el estado de pantalla que…
Define primero el estado de pantalla que la UI necesita mostrar: cargando, resultado y error.
Crea un repositorio que ofrezca los datos…
Crea un repositorio que ofrezca los datos sin depender de componentes visuales.
Expón el estado desde ViewModel mediante StateFlow…
Expón el estado desde ViewModel mediante StateFlow y actualízalo cuando se realicen operaciones.
En Compose recolecta el estado con APIs…
En Compose recolecta el estado con APIs conscientes del ciclo de vida disponibles para tu configuración.
Envía acciones del usuario al ViewModel; evita…
Envía acciones del usuario al ViewModel; evita que un composable lance consultas de base de datos por su cuenta.
Prueba por separado el repositorio y el…
Prueba por separado el repositorio y el ViewModel con respuestas simuladas.
data class UiState(val cargando: Boolean = true, val notas: List<String> = emptyList())
class NotasViewModel : ViewModel() {
private val _uiState = MutableStateFlow(UiState())
val uiState: StateFlow<UiState> = _uiState.asStateFlow()
fun mostrarEjemplo() {
_uiState.value = UiState(false, listOf("Aprender Kotlin"))
}
}Fragmento educativo: adapta las importaciones, clases, dependencias y versiones a tu proyecto. Consulta la documentación oficial antes de integrarlo.
Ejercicio práctico
Implementa una lista de notas simulada: muestra un indicador mientras carga y un mensaje cuando no hay resultados.
ViewModel no debe almacenar referencias a Activity ni Context de vida corta; evita fugas de memoria.
Cómo verificar el resultado
- Completa los pasos anteriores en un entorno de pruebas antes de distribuir cambios.
- Comprueba que la función, configuración o estrategia responde al objetivo planteado.
- Revisa errores, impacto para usuarios y políticas aplicables a tu caso.
- Conserva la evidencia y anota qué deberás revisar cuando cambien las versiones.
Fuentes oficiales para profundizar
Consulta los requisitos y ejemplos vigentes en estas fuentes antes de publicar una implementación.