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?

¿Fue útil?

Solución

Tienes algunas opciones:

  1. Podría envolver la estructura más compleja en una clase que implemente la interfaz Parcelable , que puede almacenarse en un
  2. adicional
  3. Podría envolver la estructura más compleja en una clase que implemente la interfaz Serializable , que se puede almacenar en un
  4. adicional
  5. Utiliza miembros de datos estáticos para pasar cosas, ya que todos están en el mismo proceso
  6. Utiliza almacenamiento externo (archivo, base de datos, SharedPreferences )
  7. Como señaló la persona que acaba de publicar, use un componente común, como una Aplicación personalizada o un Service
  8. 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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top