Este documento presenta una introducción al módulo de Desarrollo Móvil II de la Universidad del Valle. Se explican conceptos como la arquitectura MVVM, los componentes de Android Jetpack como Room, y el uso de una arquitectura recomendada por Google para desarrollar aplicaciones móviles robustas y de calidad.
0 calificaciones0% encontró este documento útil (0 votos)
177 vistas39 páginas
Este documento presenta una introducción al módulo de Desarrollo Móvil II de la Universidad del Valle. Se explican conceptos como la arquitectura MVVM, los componentes de Android Jetpack como Room, y el uso de una arquitectura recomendada por Google para desarrollar aplicaciones móviles robustas y de calidad.
Este documento presenta una introducción al módulo de Desarrollo Móvil II de la Universidad del Valle. Se explican conceptos como la arquitectura MVVM, los componentes de Android Jetpack como Room, y el uso de una arquitectura recomendada por Google para desarrollar aplicaciones móviles robustas y de calidad.
Este documento presenta una introducción al módulo de Desarrollo Móvil II de la Universidad del Valle. Se explican conceptos como la arquitectura MVVM, los componentes de Android Jetpack como Room, y el uso de una arquitectura recomendada por Google para desarrollar aplicaciones móviles robustas y de calidad.
Descargue como PDF, TXT o lea en línea desde Scribd
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