Compartir datos entre actividades y servicios

Estoy trabajando en un pequeño proyecto androide donde es necesario compartir algunos datos entre varias actividades y un servicio que se ejecuta en un proceso separado. Me gustaría saber cuáles son mis opciones en términos de compartir datos? Clase de aplicación? IPC? ¿Basado en archivos? Transmisiones ¡Gracias chicos!

One Solution collect form web for “Compartir datos entre actividades y servicios”

1. Parece que necesitas transmitir algo de información. Usted que será capaz de establecer receptores de difusión en cualquier actividad / servicio que le gustaría recibir notificación.

Lea más en línea acerca de Broadcastreceiver y sobre enviar broadcast

2. ¿Cómo puedo pasar datos entre Actividades / Servicios dentro de una sola aplicación?

Depende del tipo de datos que desea compartir:

Tipos de datos primitivos Para compartir datos primitivos entre Actividades / Servicios en una aplicación, utilice Intent.putExtras (). Para pasar datos primitivos que deben persistir utilice el mecanismo de almacenamiento Preferencias .

Objetos no persistentes Para compartir objetos complejos no persistentes definidos por el usuario de corta duración, se recomiendan los siguientes enfoques:

La clase android.app.Application

El android.app.Application es una clase base para aquellos que necesitan mantener el estado de la aplicación global. Se puede acceder a través de getApplication () desde cualquier actividad o servicio. Tiene un par de métodos de ciclo de vida y será instanciado por Android automáticamente si lo registra en AndroidManifest.xml.

Un campo / método estático público

Una forma alternativa de hacer accesibles los datos a través de Actividades / Servicios es usar campos y / o métodos estáticos públicos. Puede acceder a estos campos estáticos desde cualquier otra clase en su aplicación. Para compartir un objeto, la actividad que crea su objeto establece un campo estático para apuntar a este objeto y cualquier otra actividad que desee usar este objeto sólo accede a este campo estático.

Un HashMap de WeakReferences a objetos

También puede utilizar un HashMap de WeakReferences a objetos con teclas largas. Cuando una actividad quiere pasar un objeto a otra actividad, simplemente pone el objeto en el mapa y envía la clave (que es un Long único basado en un contador o marca de tiempo) a la actividad del destinatario a través de extras de intención. La actividad del destinatario recupera el objeto utilizando esta clave.

Una clase Singleton

Existen ventajas al utilizar un singleton estático, tal como se puede hacer referencia a ellos sin casting getApplication () a una clase específica de la aplicación, o se va a la molestia de colgar una interfaz en todas las subclases de su aplicación para que los distintos módulos pueden referirse a En su lugar.

Pero, el ciclo de vida de una estática no está bien bajo su control; Para cumplir con el modelo de ciclo de vida, la clase de aplicación debe iniciar y eliminar estos objetos estáticos en los métodos onCreate () y onTerminate () de la clase de aplicación

Objetos persistentes Incluso mientras una aplicación parece seguir ejecutándose, el sistema puede elegir matar su proceso y reiniciarlo más tarde. Si tiene datos que necesita para persistir de una invocación de actividad a la siguiente, debe representar esos datos como estado que se guarda por una actividad cuando se informa de que podría desaparecer.

Para compartir objetos persistentes complejos definidos por el usuario, se recomiendan los siguientes enfoques:

Application Preferences Files contentProviders SQLite DB 

Si los datos compartidos deben mantenerse en los puntos donde el proceso de aplicación puede ser eliminado, coloque los datos en almacenamiento persistente como Preferencias de aplicación, DB de SQLite, Archivos o ContentProviders. Consulte el Almacenamiento de datos para obtener más detalles sobre cómo utilizar estos componentes.

  • ¿Cuáles son los patrones de diseño utilizados en android?
  • Patrón de diseño para un servicio como la arquitectura
  • Patrón de Android para las preferencias / ajustes
  • ¿Cuál es el papel de la clase Activity en MVC?
  • ¿Alternativa al patrón observable?
  • ¿Cómo cambiar el comportamiento del método mediante la reflexión?
  • ¿Cómo implementar un singleton configurable?
  • Qué patrones de diseño debo aprender antes de iniciar Android Development
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.