2009-09-17 12 views

Répondre

58

Vous avez quelques options:

  1. Vous pouvez envelopper la structure plus complexe dans une classe qui implémente l'interface Parcelable, qui peut être stocké dans un supplément
  2. Vous pouvez envelopper la structure plus complexe dans une classe qui implémente l'interface Serializable, qui peut être stockée dans un supplément
  3. Vous utilisez les membres de données statiques pour passer des choses autour, car ils sont tous dans le même processus
  4. Vous utilisez le stockage externe (fichier, base de données, SharedPreferences)
  5. Comme la personne qui vient de poster noté, utilisez un composant commun, tel comme une coutume Application ou local Service

Ce que vous ne voulez pas faire est de passer par gros trucs extras. Par exemple, si vous créez une application qui récupère des images de la caméra, vous ne voulez pas les passer dans les extras - utilisez un membre de données statiques (icky comme ça sonne). Les intentions sont conçues pour fonctionner de façon croisée, ce qui signifie qu'il y a une certaine quantité de données à copier, que vous voulez éviter quand ce n'est pas nécessaire pour les gros fichiers.

+0

Un tas d'options que je soupçonnais. Merci! Pour ce projet particulier j'ai choisi d'aller avec l'option numéro 3. Ce n'est pas joli mais ça fait le boulot! – aspartame

+0

Je suis un grand fan de Parcelables ... ils sont faciles à construire et à transmettre. –

+5

Je les déteste. Ils sont un cauchemar d'entretien et très sujet aux erreurs. Le seul avantage de simplement passer votre objet comme Serializable est la meilleure performance. – Matthias

2

Une option que je connais est de stocker les données que vous utilisez dans un objet Application que toutes vos activités peuvent extraire du contexte.

J'ai aussi entendu d'utiliser Google Protocol Buffer pour obtenir une solution plus performante

+0

J'ai lu quelques articles se disputant contre Appication Object, tels que http://www.developerphil.com/dont-store-data-in-the-application-object/ – Muhammad