Übergabe von Daten von einem nicht-primitiven Typ zwischen den Aktivitäten in Android
-
10-07-2019 - |
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?
Lösung
Sie haben ein paar Optionen:
- Sie konnten die komplexere Struktur in einer Klasse wickeln, die den
Parcelable
-Schnittstelle implementiert, die in einem extra gespeichert werden können
- Sie konnten die komplexere Struktur in einer Klasse wickeln, die den
Serializable
-Schnittstelle implementiert, die in einem extra gespeichert werden können
- Sie verwenden statische Datenelemente Material herum passieren, da sie alle im gleichen Prozess sind
- Sie verwenden externe Speicher (Datei, Datenbank,
SharedPreferences
) - Wie die Person, die darauf hingewiesen, gerade gebucht, verwenden eine gemeinsame Komponente, wie ein benutzerdefinierten
Application
oder einem lokalenService
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