Frage

Angenommen, Sie eine neue Tätigkeit beginnen wollen und ihm einige Daten aus der aktuellen Aktivität passieren. Wenn die Daten eines primitiven Typ ist, könnte man einfach eine Absicht verwenden und Extras hinzufügen, aber wie würden Sie dies tun, für komplexere Datenstrukturen wie Arraylisten oder Objekte?

War es hilfreich?

Lösung

Sie haben ein paar Optionen:

  1. Sie konnten die komplexere Struktur in einer Klasse wickeln, die den Parcelable-Schnittstelle implementiert, die in einem extra
  2. gespeichert werden können
  3. Sie konnten die komplexere Struktur in einer Klasse wickeln, die den Serializable-Schnittstelle implementiert, die in einem extra
  4. gespeichert werden können
  5. Sie verwenden statische Datenelemente Material herum passieren, da sie alle im gleichen Prozess
  6. sind
  7. Sie verwenden externe Speicher (Datei, Datenbank, SharedPreferences)
  8. Wie die Person, die darauf hingewiesen, gerade gebucht, verwenden eine gemeinsame Komponente, wie ein benutzerdefinierten Application oder einem lokalen Service

Was Sie nicht wollen, zu tun ist, große Sachen über Extras passieren. Zum Beispiel, wenn Sie eine Anwendung erstellen, die Bilder von der Kamera packt, möchten Sie nicht die in Extras passieren - verwenden, um ein statisches Datenelement (eklig wie das klingt). Intents sind so konzipiert, Quer Prozess zu arbeiten, was bedeutet, dass es eine gewisse Menge an Daten kopieren, die auf geht, die Sie vermeiden wollen, wenn es nicht notwendig, große Sachen sind.

Andere Tipps

Eine Option, die ich kenne, die Daten speichern, die Sie in einem Application-Objekt verwenden, die alle Ihre Aktivitäten aus dem Kontext abrufen können.

Ich habe auch gehört, die Verwendung von Google Protocol Buffer zu erreichen eine leistungsfähigere Lösung

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top