Pasar datos de un tipo no primitivo entre actividades en Android
-
10-07-2019 - |
Pregunta
Suponga que desea comenzar una nueva actividad y pasarle algunos datos de la actividad actual. Si los datos son de un tipo primitivo, simplemente podría usar una intención y agregar extras, pero ¿cómo haría esto para estructuras de datos más complejas como listas de matrices u objetos?
Solución
Tienes algunas opciones:
- Podría envolver la estructura más compleja en una clase que implemente la interfaz
Parcelable
, que puede almacenarse en un adicional
- Podría envolver la estructura más compleja en una clase que implemente la interfaz
Serializable
, que se puede almacenar en un adicional
- Utiliza miembros de datos estáticos para pasar cosas, ya que todos están en el mismo proceso
- Utiliza almacenamiento externo (archivo, base de datos,
SharedPreferences
) - Como señaló la persona que acaba de publicar, use un componente común, como una
Aplicación
personalizada o unService
local
Lo que no quieres hacer es pasar cosas grandes a través de extras. Por ejemplo, si está creando una aplicación que toma imágenes de la cámara, no desea pasarlas en extras: use un miembro de datos estático (por más repugnante que parezca). Las intenciones están diseñadas para trabajar en procesos cruzados, lo que significa que hay una cierta cantidad de copia de datos que se realiza, lo que debe evitar cuando no es necesario para grandes cosas.
Otros consejos
Una de las opciones que conozco es almacenar los datos que está utilizando en un objeto Aplicación que todas sus actividades pueden recuperar del contexto.
También he oído hablar del uso de Google Protocol Buffer para lograr una solución de mayor rendimiento