Arquitectura MVVM en Android
26 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

¿Qué función se utiliza para observar cambios en un objeto de live data dentro del ViewModel?

  • currentQuote()
  • observe() (correct)
  • setOnClickListener()
  • randomQuote()
  • ¿Cuál es el propósito de llamar a la función randomQuote() en el contexto del ViewModel?

  • Crear una nueva instancia de ViewModel
  • Modificar el tema de la aplicación
  • Eliminar la toolbar de la app
  • Actualizar el valor del live data (correct)
  • ¿Qué elemento se debe modificar para quitar la toolbar de la app?

  • El objeto con live data
  • El listener del constraintLayout
  • El ViewModel
  • El theme del parent en res > values (correct)
  • ¿Qué técnica se sugiere opcionalmente para mejorar la estilo de la aplicación?

    <p>Añadir NoActionBar al theme</p> Signup and view all the answers

    ¿Cuál es el efecto de añadir un setOnClickListener al constraintLayout principal?

    <p>Se actualiza la cita cuando se toca la pantalla</p> Signup and view all the answers

    ¿Cuál es la función principal del modelo en la arquitectura MVVM?

    <p>Almacenar y gestionar los datos de la aplicación.</p> Signup and view all the answers

    En la arquitectura MVVM, ¿qué papel juega el ViewModel?

    <p>Sirve de intermediario entre el modelo y la vista.</p> Signup and view all the answers

    ¿Qué es LiveData en el contexto de MVVM?

    <p>Un componente que permite a la vista observar cambios en el ViewModel.</p> Signup and view all the answers

    ¿Cuál de las siguientes opciones describe mejor la arquitectura MVVM?

    <p>Un enfoque en el que la vista y el modelo se comunican a través del ViewModel.</p> Signup and view all the answers

    Al utilizar MVVM, ¿qué sucede cuando el modelo es modificado?

    <p>El ViewModel notifica a la vista sobre el cambio.</p> Signup and view all the answers

    En MVVM, ¿qué tipo de elementos forman parte de la vista?

    <p>XML, activities y fragments.</p> Signup and view all the answers

    ¿Cuál de las siguientes afirmaciones sobre MVVM es incorrecta?

    <p>La vista se conecta directamente al modelo.</p> Signup and view all the answers

    ¿Cuál de los siguientes conceptos no pertenece en la arquitectura MVVM?

    <p>Controlador.</p> Signup and view all the answers

    ¿Qué debe hacer el ViewModel cuando recibe un evento de la UI?

    <p>Modificar el modelo de la cita</p> Signup and view all the answers

    ¿Cuál es la función de LiveData en la arquitectura MVVM?

    <p>Notificar cambios en los datos a las actividades suscritas</p> Signup and view all the answers

    ¿Qué tipo de objeto se utiliza para representar una cita en el modelo?

    <p>QuoteModel</p> Signup and view all the answers

    ¿Cuál es el propósito del método random() en la clase QuoteProvider?

    <p>Generar un índice aleatorio para seleccionar una cita</p> Signup and view all the answers

    ¿Qué se debe activar en el archivo build.gradle(app) para utilizar View Binding?

    <p>Java 1.8</p> Signup and view all the answers

    ¿Qué diseño de vista se recomienda para mostrar la cita y el nombre del autor?

    <p>ConstraintLayout</p> Signup and view all the answers

    ¿Qué clase debe extender el QuoteViewModel para convertirse en un ViewModel?

    <p>ViewModel</p> Signup and view all the answers

    ¿Cómo se integra la actividad al ViewModel?

    <p>Usando by viewModels()</p> Signup and view all the answers

    ¿Qué ocurre cuando el modelo de datos es modificado en el ViewModel?

    <p>El LiveData actualiza la interfaz de usuario</p> Signup and view all the answers

    ¿Cuál es la característica principal de una data class como QuoteModel?

    <p>Facilitar la encapsulación de datos</p> Signup and view all the answers

    ¿Qué configuración se añade para habilitar el View Binding en el build.gradle?

    <p>viewBinding.enabled = true</p> Signup and view all the answers

    ¿Cuál es la función del método postValue() en el ViewModel?

    <p>Establecer un nuevo valor en LiveData</p> Signup and view all the answers

    ¿En qué directorio se debe crear la clase QuoteModel?

    <p>model</p> Signup and view all the answers

    Study Notes

    Arquitectura MVVM en Android

    • Introducción a la arquitectura MVVM: La arquitectura MVVM (Modelo-Vista-Modelo de Vista) organiza el código de una aplicación para facilitar el mantenimiento a medida que ésta crece. Es una arquitectura popular, especialmente desde que Google la adoptó como arquitectura oficial.

    • Componentes de MVVM:

      • Modelo (Model): Representa los datos, almacenando información recuperada de bases de datos o servicios web.
      • Vista (View): Incluye la interfaz de usuario (UI) – XMLs, Activities, y Fragments. No realiza lógicas, solo se suscribe al ViewModel para obtener instrucciones de renderizado.
      • ViewModel: Conecta el modelo y la vista. Responde a cambios en el modelo y notifica a la vista para actualizar la UI.
    • Funcionamiento de MVVM (Ejemplo de app de citas):

      • La Activity se suscribe a su ViewModel usando LiveData y el patrón observer. La Activity solo actualiza la UI cuando el ViewModel la notifica del cambio.
      • Al pulsar, la Activity notifica al ViewModel.
      • El ViewModel actualiza el Modelo de Cita mediante una función (p.ej. randomQuote) utilizando una fuente de datos (p. ej. QuoteProvider que simula Retrofit u otras fuentes de datos).
      • El ViewModel notifica al Activity sobre el cambio en el modelo mediante LiveData.
      • La Activity actualiza la UI.

    Implementación de MVVM en Android

    • Proyecto de ejemplo: El proyecto MVVM Example utiliza View Binding y Java 1.8 (Kotlin se ejecuta sobre JVM).

    • build.gradle(app): Configura dependencias y activa View Binding.

      • Se especifica la compilación con Java 1.8, incluyendo dependencias para fragments aunque no se usen aquí.
    • Diseño (UI): activity_main.xml incluye un ConstraintLayout con dos TextViews para la cita y el autor. Se utiliza View Binding para acceder a los elementos. Se definen los colores en res/values/colors.xml.

    • MainActivity (View): Usa View Binding para acceder a la vista. Se suscribe al ViewModel por medio de by viewModels(). Observa los cambios en LiveData del ViewModel mediante la función observe().

    • QuoteModel (Model): Clase de datos sencilla que contiene cita y autor.

    • QuoteProvider (Model): Simula una fuente de datos, devuelve una cita de una lista predefinida aleatoriamente. Este se considera un punto básico de entrada de información para un proyecto y se busca evitar.

    • QuoteViewModel (ViewModel): Hereda de ViewModel. Utiliza MutableLiveData para notificar a la vista. Incluye la función randomQuote() que actualiza la cita y notifica el cambio usando postValue().

    • Actualización de la UI: El ConstraintLayout principal se configura con un setOnClickListener para llamar a la función randomQuote() en el ViewModel cada vez que se pulsa. Esto provoca la actualización de la cita.

    • Consideraciones:

      • Los ejemplos en la explicación utilizan una simulación básica de una fuente de datos. En la práctica, se usaría Retrofit, Room u otras librerías de acceso a datos para interactuar con servicios web o bases de datos.
      • La arquitectura se presenta con un ejemplo básico para facilitar la comprensión pero incluye la integración con LiveData y el uso del patrón observer. Esta es una forma de actualizar la vista o UI.

    Studying That Suits You

    Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

    Quiz Team

    Description

    Este quiz explora la arquitectura MVVM utilizada en el desarrollo de aplicaciones Android. Aprenderás sobre sus componentes, como el Modelo, la Vista y el ViewModel, así como su funcionamiento a través de un ejemplo práctico. Ideal para quienes deseen comprender cómo organizar el código para facilitar el mantenimiento de aplicaciones.

    More Like This

    MVC and MVVM Patterns in Software Design
    16 questions
    Use Quizgecko on...
    Browser
    Browser