Android: Uso del patrón de observador con vistas (posiblemente MVC, MVVM relacionado)

He pasado algunas horas leyendo varias preguntas y respuestas sobre la implementación de los diferentes patrones de tipo MVC en Android. He visto algunos ejemplos de código publicado en varios blogs. Yo, sin embargo, todavía apreciar algunas ideas y opiniones sobre lo que estoy tratando de lograr. Específicamente, me gustaría resolver el mejor mecanismo de código para informar a una sola vista o un grupo de vistas, que se ha cambiado un elemento particular de datos.

Mi aplicación es simplemente una que obtiene datos de medición de un dispositivo de hardware a través de Bluetooth, y muestra y registra esos datos. En la actualidad, tengo un servicio que se encarga de las comunicaciones Bluetooth y el registro de fondo. Tengo una clase de almacén de datos "global" que es una extensión de la aplicación.

Como los datos de medición son encuestados desde el dispositivo externo, los datos de medición (que en realidad son alrededor de treinta bytes de datos) se actualizan en el objeto de almacén de datos (que, en términos MVC, supongo que es el 'modelo').

En cualquier momento, sólo UI Views mostrará un pequeño subconjunto de esos datos. Típicamente, una Vista dada sólo estará interesada en representar un byte particular de datos de medición. A medida que el usuario se desplaza a diferentes clases de actividad, se mostrarán otras vistas que mostrarían un subconjunto diferente de esos datos.

Así que para llegar al punto, estoy tratando de elegir la mejor manera de causar invalidate() para ser invocado en las vistas interesadas cuando un elemento de datos dado se cambia.

Las opciones parecen ser:

  1. Hacer uso de la clase Observer existente y las clases relacionadas.

  2. Tipo de patrón de observador 'roll my own', mediante la creación de mis propias funciones register () y unregister () en el modelo de datos. Las vistas de observador se mantendrían en un ArrayList (o tal vez un arreglo más complejo de una lista de observadores por elemento de datos). Hacer un bucle a través de este ArrayList cada vez que los datos se actualizan y llaman invalidate() (o postInvalidate() por supuesto, dependiendo de mi arreglo de roscado).

¿Hay alguna razón por la que debería usar uno de los anteriores sobre el otro? ¿Y hay otro mecanismo de "observador" que debería considerar?

    One Solution collect form web for “Android: Uso del patrón de observador con vistas (posiblemente MVC, MVVM relacionado)”

    Muchas vistas en Android están respaldadas por alguna subclase de BaseAdapter que tiene un método notifyDataSetChanged() que indica a la vista que se actualice. Si está utilizando una vista (como ListView o GridView o cualquier descendente de AdapterView ), entonces está respaldado por un BaseAdapter y simplemente puede actualizar ese adaptador y la vista se actualizará.

    Supongo que esto significa, yo voto que utilice el patrón de observador incorporado. Si está utilizando una vista personalizada, obviamente esto no funcionará y tendría que usar un método personalizado de actualización de todos modos.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.