Was entspricht einer Session / Cookie-Variable in Android am ehesten?

8

Zum Beispiel möchte ich, dass meine Benutzer auf eine Schaltfläche "Neues Angebot anfordern" klicken können, die eine neue Zeile in der Datenbank beginnt, damit Daten gespeichert werden können. Ich bin mir jedoch nicht sicher, wie ich Aktivitäten unabhängig speichern kann (oder Kreuzaktivität) Daten, wie die _id der Zeile, die ich erneut anfordern und die Zeile aktualisieren muss, wenn neue Daten für nachfolgende Aktivitäten verfügbar werden. Wie heißt dieser Mechanismus und wie wird er gemacht?

    
Allen Gingrich 04.08.2010, 14:27
quelle

1 Antwort

10

Wie gebe ich Daten zwischen Aktivitäten / Diensten in einer einzigen Anwendung weiter?

Das hängt vom Typ der Daten ab, die Sie teilen möchten:

Primitive Datentypen Um primitive Daten zwischen Aktivitäten / Diensten in einer Anwendung freizugeben, verwenden Sie Intent.putExtras (). Um primitive Daten zu übergeben, die persistent sein müssen, verwenden Sie den Speichermechanismus Preferences .

Nicht persistente Objekte Für die gemeinsame Nutzung komplexer nicht persistenter benutzerdefinierter Objekte für kurze Zeit werden die folgenden Ansätze empfohlen:

Die android.app.Application-Klasse

Die android.app.Application ist eine Basisklasse für Benutzer, die den globalen Anwendungsstatus verwalten müssen. Es kann über getApplication () von jeder Aktivität oder Service zugegriffen werden. Es hat ein paar Lebenszyklus-Methoden und wird von Android automatisch instanziiert, wenn Sie es in AndroidManifest.xml registrieren.

Ein öffentliches statisches Feld / eine Methode

Eine alternative Möglichkeit, Daten über Aktivitäten / Dienste hinweg zugänglich zu machen, besteht darin, öffentliche statische Felder und / oder Methoden zu verwenden. Sie können auf diese statischen Felder von jeder anderen Klasse in Ihrer Anwendung zugreifen. Um ein Objekt freizugeben, legt die Aktivität, die Ihr Objekt erstellt, ein statisches Feld fest, das auf dieses Objekt zeigt, und jede andere Aktivität, die dieses Objekt verwenden möchte, greift einfach auf dieses statische Feld zu.

Eine HashMap von schwachenReferenzen auf Objekte

Sie können auch eine HashMap of WeakReferences für Objekte mit langen Schlüsseln verwenden. Wenn eine Aktivität ein Objekt an eine andere Aktivität übergeben möchte, legt sie das Objekt einfach in die Karte und sendet den Schlüssel (ein eindeutiges Lang basierend auf einem Zähler oder Zeitstempel) über Vorsatzextras an die Empfängeraktivität. Die Empfängeraktivität ruft das Objekt mit diesem Schlüssel ab.

Eine Singleton-Klasse

Es gibt Vorteile bei der Verwendung eines statischen Singleton, z. B. wenn Sie auf sie verweisen, ohne dass getApplication () in eine anwendungsspezifische Klasse umgesetzt wird, oder indem Sie eine Schnittstelle für alle Ihre Anwendungsunterklassen für Ihre verschiedenen Module aufhängen kann stattdessen auf diese Schnittstelle verweisen.

Aber der Lebenszyklus einer statischen ist nicht gut unter Ihrer Kontrolle; Um dem Lebenszyklusmodell zu folgen, sollte die Anwendungsklasse diese statischen Objekte in den onCreate () - und onTerminate () - Methoden der Anwendungsklasse

initiieren und abreißen

Persistente Objekte Selbst wenn eine Anwendung scheinbar weiterhin ausgeführt wird, kann das System den Prozess beenden und später neu starten. Wenn Daten vorhanden sind, die Sie von einem Aktivitätsaufruf zum nächsten beibehalten müssen, müssen Sie diese Daten als Status darstellen, der von einer Aktivität gespeichert wird, wenn sie darüber informiert wird, dass sie möglicherweise verschwindet.

Für die Freigabe komplexer persistenter benutzerdefinierter Objekte werden die folgenden Ansätze empfohlen:

%Vor%

Wenn die freigegebenen Daten an Punkten gespeichert werden müssen, an denen der Anwendungsprozess abgebrochen werden kann, speichern Sie diese Daten im permanenten Speicher wie Anwendungseinstellungen, SQLite DB, Dateien oder ContentProvider. Weitere Informationen zur Verwendung dieser Komponenten finden Sie im Datenspeicher.

    
Pentium10 04.08.2010, 15:15
quelle

Tags und Links