App-muestra arquitectura Android

La aplicación «Counter Classic XML Views MVVM» es un contador que avanza 10 unidades por segundo. Además, te permite marcar «momentos» en el tiempo con un botón, y quedan registrados en una lista para que puedas verlos.
Esta aplicación está diseñada y programada siguiendo las mejores prácticas recomendadas por Google, incorporando las ventajas de StateFlow. Es una excelente muestra de mis conocimientos de arquitectura Android en la actualidad.
Descripción técnica de la app
Counter Classic es una aplicación de demostración desarrollada en Kotlin, diseñada para ejemplificar una implementación estructurada y modular de la arquitectura MVVM en Android. Con un enfoque en las mejores prácticas recomendadas por Google, la aplicación muestra cómo gestionar el estado de la UI, interactuar con datos de manera eficiente y estructurar el código para mejorar la escalabilidad y mantenibilidad del proyecto.

Tecnologías y Arquitectura Implementadas:
– Gestión de Dependencias con Hilt:
Se implementa Hilt, la solución oficial de inyección de dependencias en Android, para desacoplar los componentes del sistema. Esto permite:
Un código modular y fácil de probar.
Inyección eficiente de instancias de ViewModel, Repositorios y otras dependencias clave.
Gestión automática del ciclo de vida de las dependencias, optimizando recursos.
– Manejo Asíncrono con Coroutines:
El uso de Coroutines facilita la ejecución de tareas en segundo plano sin bloquear el hilo principal. Se emplea para:
Consultas y operaciones con Room sin bloquear la UI.
Llamadas asíncronas dentro de los casos de uso, asegurando una ejecución eficiente y estructurada.
Interoperabilidad con StateFlow y LiveData para una actualización fluida de la UI.
– Gestión de Estado con StateFlow & LiveData:
La aplicación aprovecha StateFlow y LiveData para una reactividad óptima en la UI:
StateFlow se usa en el ViewModel para emitir y manejar el estado del contador de manera estructurada.
LiveData facilita la observación de cambios de estado en los componentes de la UI.
Se optimiza la actualización de la UI evitando renderizados innecesarios.
– ViewModel: Separación de Lógica y Persistencia de Estado
El patrón MVVM se implementa a través de ViewModel, asegurando:
Separación clara entre la lógica de negocio y la interfaz de usuario.
Persistencia de datos en cambios de configuración, evitando recreaciones innecesarias de la UI.
Comunicación eficiente con la capa de dominio y datos mediante Casos de Uso y Repositorio.
– Casos de Uso (Use Cases): Aplicación de Principios SOLID
Para mejorar la estructura y mantenimiento del código, se emplea una capa de Casos de Uso que encapsula reglas de negocio específicas:
Principio de Responsabilidad Única (SRP): cada caso de uso tiene una única función específica.
Desacoplamiento de la lógica de la UI, facilitando cambios sin afectar otras capas.
– Repositorio & Room: Persistencia de Datos
Para gestionar el acceso a datos de manera eficiente, se implementa un Repositorio que interactúa con la base de datos local Room:
La base de datos almacena el valor del contador para persistencia a largo plazo.
DAO (Data Access Object) permite consultas y actualizaciones eficientes sin afectar la UI.
Uso de Coroutines para asegurar operaciones en hilos de fondo.

