Android MVVM

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 39

DESARROLLO

MÓVIL II
Carrera de Ingeniería Sistemas
Universidad del Valle

Docente: Ing. Victor Sanjines Lopez


Módulo Introductorio :
Arquitectura MVVM
• Jetpack de Android.

• Comprender los
Componentes de Jetpack.

• Entender el concepto de uso


de una arquitectura de
desarrollo de software.

• Comprender los conceptos


de MVP.

• Analizar los componentes de


MVVM.

• Manejo de Room.

• Caso de Uso.

• Aplicación Móvil de ejemplo.


Android Jetpack
• Android Jetpack ayuda a acelerar el desarrollo
Android con componentes, herramientas y guías que
eliminan las tareas repetitivas, permitiendo crear de
forma más rápida y sencilla aplicaciones de alta
calidad y testeables.
Android Jetpack
• Android Jetpack es una guía arquitectural apoyada por
nuevas librerías, herramientas como Android Studio y
conceptos que nos ayudan a mejorar el desarrollo
Android.
• Es en este sentido que se podría afirmar que:
Android Jetpack
• Android Jetpack es una guía
arquitectónica, soportada por un conjunto
de librerías y herramientas en cuatro áreas
clave del Desarrollo Android.
Android Jetpack
• Las cuatro áreas clave que soportan a Android Jetpack son:
Arquitectura, Interfaz de Usuario (UI), Fundamento y Comportamiento.
Android Jetpack
• Cada área tiene sus propias características, componentes,
librerías y definiciones.
• se ha agregado herramientas y librerías que ayudan su
implementación que en años anteriores suponía el uso de mucho
código boilerplate.
• Esta “colección de librerías”, son individualmente adoptables y
construidas para trabajar juntas mientras aprovechan todas la
potencia del lenguaje de programación y en especial (Kotlin), lo
hace aún más productivo.
Introducción a la
Arquitectura
• El patrón Model View Presenter es un patrón arquitectónico
basado en el patrón Model View Controller (MVC) que
aumenta la separación de las preocupaciones y facilita las
pruebas unitarias. Crea tres capas, Model, View y
Presenter, cada una con una responsabilidad bien definida.
Introducción a la
Arquitectura
• Todo parte desde el Google I/O 2017, donde la
marca de la G, presentó la Arquitectura de
Componentes. Tal como su nombre menciona, una
arquitectura base para todas nuestras aplicaciones
Android bajo un patrón MVVM.
Introducción a la
Arquitectura
• De ahí a la fecha y como se mencionó antes,
Android Jetpack está dando mejoras a cada área de
Android y una de ellas es a su arquitectura, sumando
constantemente nuevos componentes como ser:
Navigation, Pagging y Workmanager.
Introducción a la
Arquitectura
• Navigation
• Este nuevo componente nos permite estructurar fácilmente nuestra interfaz de usuario,
creando flujos más limpios al momento de hacer nuestra aplicación.
Introducción a la
Arquitectura
• Pagging
• La Librería de paginación facilita la carga de datos dentro de un
RecyclerView, teniendo la data sesgada y progresiva conforme
sea requerida.
• Workmanager
• Es una nueva y potente librería que proporciona un gran apoyo
para trabajos en segundo plano, pero a diferencia de los
clásicos Asyntask o Executors.
Interfaz de Usuario (UI)
• En la interfaz de usuario ha habido cambios interesantes para Wear
OS (Android Wear) y Android Auto.
• Entre algunas nuevas librerías podemos mencionar a: EmojiCompat
que nos permite tener una compatibilidad de Emojis entre cada
plataforma y así evitar los clásicos “☐” cuando tratamos de compartir
un emoji.
Interfaz de Usuario (UI)
Fundamento
(Foundation)
• En este caso, la traducción es muy literal, en realidad sería Base
o Cimientos, dado que esta área de Jetpack es la encargada de
dar “asistencia” a todas las demás áreas de Android Jetpack
como tal.
• En el caso de las capacidades del sistema, podemos hablar de la
librería AppCompat que nos provee distintos paquetes/módulos
para poder dar soporte a las distintas versiones de Android.
Jetpack sin embargo trajo cambios para este tipo de librerías, y
uno de los cambios fue unificar la estructura de paquetes de las
librerías de soporte bajo el nombre de AndroidX.
AndroidX
• Somos conscientes de todo el lío que es la
compatibilidad con versiones anteriores de las
librerías de soporte como: v4, v7, v13, v8, etc,
etc.
• Jetpack está implementando una nueva
estructura para esclarecer qué paquetes se
incluyen con el sistema operativo Android y
cuáles con el APK de la aplicación.
AndroidX
• Entre los cambios tenemos:
• Refactorización de Paquetes Java a
androidx.
• Nomenclaturas Maven más consistentes
Comportamiento
(Behavior)
• Cuenta con componentes como las
Notificaciones (tanto para Móviles como
Werables), Permisos (introducidos desde
Android 6), el api para compartir (Share) links,
textos, etc; Media, Dowload Manager, etc.
Slices
• Son plantillas para la UI que pueden mostrar
contenido sofisticado, dinámico e interactivo de tu
aplicación con la aplicación de búsqueda de Google y,
posteriormente desde otros lugares como el Asistente
de Google.
MVVM Android
• Guía de introducción para emplear
una Arquitectura en tus aplicaciones
Android.
Arquitectura Android

• Vamos en este módulo a utilizar la arquitectura


recomendad por el equipo de Android para
desarrollar apps sólidas y con calidad de
producción.
Para este curso
• Debes estar familiarizado con desarrollo Android, ojo no es un
curso para principiantes, abordaremos bastantes conceptos de
desarrollo y buenas prácticas.
• Aprenderemos a manejar Room para nuestras bases de datos
locales.
• Si el tiempo de avance es bueno, incursionaremos posiblemente en
el manejo de Retrofit y Dagger2.
Ventajas de
MVVM
• Nos proporciona un código más limpio y más legible.
• Nos proporciona una aplicación que pueda ser expandida y
mantenida fácilmente, puesto que al utilizar MVVM vamos a
programar por capas.
• Nos permite realizar tests unitarios y de interfaz de usuario de
una manera muy sencilla, puesto que nuestro código esta
separado.
• Nos proporciona una App robusta.
Módulos de la
App
No almacenar datos en
los componentes
• En Android nosotros no somos los dueños de los
componentes Activities o Fragments de nuestra aplicación,
sino que en realidad es el Sistema operativo. Por lo tanto no
deberíamos almacenar datos o estados en ellos. En cualquier
momento el sistema operativo puede cerrar algún proceso si
lo necesita.
• Ejemplo: Podría cerrar nuestra Main Activity y cuando
volviéramos ya no tendríamos los datos guardados en la
activity. El ejemplo más sencillo es rotar el móvil que mata la
Activity y la vuelve a crear.
Separación de
Problemas

• El error más frecuente es escribir todo el código en la


Activity o Fragment.
• Estas clases solo deben contener la lógica que
controle las interacciones del usuario y control de la
Interfaz de Usuario (UI).
• Objetivo: Que estas clases sean lo más tontas
posibles con el objetivo de evitar los problemas del
ciclo de vida.
Controlar la UI con un
Modelo

• Debemos controlar nuestra UI a través de un modelo,


preferiblemente de persistencia de datos a través de
Room, SQLite o SharedPreferences.
• Los modelos son los componentes responsables de
manejar los datos de nuestra app.
• Por lo tanto deben ser independientes de los objetos
View. De modo que no les afecta el ciclo de vida y
los problemas asociados que hemos visto.
Ventajas del modelo de
persistencia

• Los usuarios de la app no pierden los


datos ni cuando el sistema operativo
cierra nuestra app para liberar recursos.
• La app funciona incluso si tuvieras el
problema de no contar con acceso a
internet y tu app lo requiere.
Arquitectura
recomendada por Google

• Nota: es imposible que una única forma de


escribir código sea la mejor para todas las
situaciones.
• En el siguiente ejemplo vamos a ver la que
recomienda la gente de Android, que es un buen
punto de partida para la mayoría de aplicaciones.
Pero por supuesto esta sujeta a que la puedan
modificar en cualquier momento.
Sientan el poder!!
View Model
• La clase ViewModel ha sido especialmente diseñada por el
equipo de Android para almacenar y administrar datos
relacionados con las UI’s de una forma independiente del
ciclo de vida común de una Activity.
• Es decir la clase View Model permite que los datos
sobrevivan a los cambios de configuración, como puede
ser la rotación de la pantalla.
• El ViewModel no se destruye cuando hay un cambio de
configuración, la nueva instancia del propietario (activity o
fragment) solo se re conectará al ViewModel existente.
Ciclo de Vida
Ciclo de Vida
Es Maravilloso
View Model
• Además de proporcionar los datos para el Fragment o
Activity, el ViewModel también tiene la lógica de
negocio del manejo de datos para comunicarse con el
modelo.
• Es decir que el ViewModel puede llamar a los
componentes para la carga de datos como puede ser
el Repositorio.
• El ViewModel no debe tener ninguna referencia a la
View que pertenece. Es decir al Fragment o la Activity.
LiveData
• LiveData es una clase observable DataHolder. Y es consciente del
ciclo de vida. Es decir que respeta el ciclo de vida de otros
componentes de la aplicación como nuestras activities o
fragmento. Esto nos garantiza que LiveData actualiza los
observadores de componentes que se encuentran en ciclo de vida
activo.
• Es decir notifica a nuestra Activity de cualquier nuevo dato que se
deba mostrar u actualizar.
• LiveData nos soluciona los memoryleak, puesto que los
observadores cancelan su suscripción a los observables cuando el
ciclo de vida se destruye.
Ventajas LiveData
• Nos asegura que la UI coincide con el estado de
los datos: LiveData sigue el patrón Observer. Esto
quiere decir que en lugar de actualizar la UI cada
vez que cambian los datos de la app, su
observador puede actualizar la interfaz cada vez
que los datos cambian.
• No memory leak: los observadores están
vinculados a los objetos con ciclo de vida y una
vez estos se destruyen se cancela la subscripción.
Ventajas LiveData
• Datos siempre actualizados en nuestra
app: si un ciclo de vida se vuelve
inactivo, recibe los últimos datos al
volver a estado activo. Por ejemplo, si
nuestra Activity pasa a segundo plano,
cuando vuelve a primer plano recibe los
datos más recientes.
Gracias!
www.relativity.com.b
o

También podría gustarte