Ich erstelle eine Ereignissuchanwendung. Wir legen Suchkriterien von einem Bildschirm in einem anderen Bildschirm fest, dann kann der Benutzer die Suchkriterien vom 3. Bildschirm aus bearbeiten und wechselt zum 4. Bildschirm.
Um die obige Aufgabe zu erfüllen, verwende ich ein statisches Objekt, das sich an die Werte rund um die Anwendung erinnert, und ich muss nichts extra tun.
Aber ich habe Angst, wenn über statische Objektlebenszyklus in Android, wenn wenig Speicher gefunden Android statische Objekte löschen?
Da Android Multitasking unterstützt, werden statische Objekte beim Multitasking entfernt, wenn der Benutzer zu einer anderen Anwendung wechselt und wenn der Benutzer zurückkommt. irgendeine Idee ?? und auch vorschlagen, statische Objekte über Singleton-Methode zu halten, ist ein besserer Ansatz?
Nun, das Singleton-Muster basiert auch auf der Verwendung statischer Variablen, sodass Sie sich tatsächlich an derselben Position befinden würden. Während der statische Ansatz meistens funktioniert, kann es in einigen Fällen vorkommen, dass der Prozess Ihrer Aktivität abgebrochen wird und Sie die statischen Werte verlieren, wenn der Speicher voll ist und eine andere Aktivität im Vordergrund steht, bevor Ihre Anwendung zum nächsten Bildschirm wechselt. Android bietet jedoch einige Optionen zum Beibehalten oder Übertragen von Werten zwischen Status:
Sie können einige Codebeispiele für die Verwendung von Einstellungen, Absichten und der SQLite-Datenbank erhalten, indem Sie den Aegis-Shield-Quellcodebaum in Google Code oder in anderen Open Source-Android-Anwendungen betrachten.
quelle
Nach einigen Recherchen stellt sich heraus, dass die Verwendung von Application zum Speichern von Singletons keine so gute Idee ist, es sei denn, Sie sind bereit, sie neu zu erstellen:
Speichern Sie keine Daten im Anwendungsobjekt
also während die akzeptierte antwort ist technisch korrekt, es nicht alle Informationen zur Verfügung stellen.
Wie der obige Link andeutet, müssen Sie bereit sein, nach Null zu suchen und die Daten nach Möglichkeit neu zu erstellen, wenn Sie wirklich an diesem Modell festhalten möchten.
quelle
@ r1k0 ist genau hier. Das Speichern von Daten in statischen Feldern einer Klasse bleibt nicht über alle Kills und Neustarts des Anwendungsprozesses hinweg bestehen. Android beendet routinemäßig Prozesse (Ausführen von Apps), wenn Speicher benötigt wird.
Laut Android-Dokument: Aktivitätsstatus und Auswurf aus dem Speicher ,
Mit den folgenden Methoden können Sie den Status von Grundelementen sowie serialisierbaren und parzellierbaren Objekten speichern und wiederherstellen. Diese werden während des normalen Aktivitätslebenszyklus automatisch aufgerufen.
Wenn Sie also eine Klasse haben, die nur statische Variablen enthält, können Sie den Status jedes Felds in onSaveInstanceState () speichern und in onRestoreInstanceState () wiederherstellen. Wenn Android den Prozess beendet, in dem Ihre App ausgeführt wird, wird der Status Ihrer Variablen gespeichert, und wenn Android Ihre App wiederherstellt, werden die Werte im Speicher im selben Status wie zuvor wiederhergestellt.
quelle