Question

Supposons que vous souhaitiez démarrer une nouvelle activité et lui transmettre certaines données de l'activité en cours. Si les données sont de type primitif, vous pouvez simplement utiliser une intention et ajouter des extras, mais comment procéderiez-vous pour les structures de données plus complexes telles que les arraylists ou les objets?

Était-ce utile?

La solution

Vous avez plusieurs options:

  1. Vous pouvez envelopper la structure plus complexe dans une classe implémentant l'interface Parcelable , qui peut être stockée dans un extra
  2. Vous pouvez envelopper la structure plus complexe dans une classe implémentant l'interface Serializable , qui peut être stockée dans un extra
  3. Vous utilisez des membres de données statiques pour transmettre des éléments, car ils sont tous dans le même processus
  4. Vous utilisez un stockage externe (fichier, base de données, Préférences partagées )
  5. Comme l'a noté la personne qui vient de poster, utilisez un composant commun, tel qu'un application personnalisé ou un service
  6. local

Ce que vous ne voulez pas faire, c'est passer de gros trucs via des extras. Par exemple, si vous créez une application qui récupère des images de la caméra, vous ne voulez pas les transmettre aux extras - utilisez un membre de données statique (aussi dégoûtant que cela puisse paraître). Les intentions sont conçues pour fonctionner en multi-processus, ce qui signifie qu’une certaine quantité de copie de données est en cours, ce que vous voulez éviter si cela n’est pas nécessaire pour les gros projets.

Autres conseils

À ma connaissance, une option consiste à stocker les données que vous utilisez dans un objet Application que toutes vos activités peuvent extraire du contexte.

J'ai également entendu parler de l’utilisation du tampon de protocole Google pour atteindre les objectifs une solution plus performante

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top