So speichern Sie Daten in einer Android-App
Ich vor kurzem kodiert eine Android-app. Es ist nur eine einfache app, die ermöglicht es Ihnen, halten Punktzahl, ein basketball-Spiel mit ein paar einfachen Zähler Abständen. Ich bin immer Nachfrage, fügen Sie eine save-Funktion, so können Sie speichern Sie Ihre Spielstände und dann laden Sie Sie zurück. Derzeit, beim beenden der app werden Ihre Daten verloren. Also, was ich Fragen ist, was müsste ich hinzufügen, haben Sie die app speichern Sie eine Bezeichnung (score) und dann laden Sie es wieder auf. Danke Jungs sorry ich weiß nicht viel über dieses Zeug.
InformationsquelleAutor der Frage user1446371 | 2012-06-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie zwei Optionen, und ich überlasse die Auswahl dir überlassen.
Gemeinsamen Vorlieben
Dies ist ein Rahmen, der einzigartig für Android, können Sie zum speichern von Grundwerten (wie
int
,boolean,
undString
, obwohl streng genommenString
ist nicht primitiv), in einer Schlüssel-Wert-Rahmen. Dies bedeutet, dass Sie geben einen Wert ein name, sagen wir, "homeScore" und speichern Sie den Wert zu diesem Schlüssel.Internen Speicher
Dieser, meiner Meinung nach, ist das, was Sie suchen. Sie können speichern, was Sie wollen, um eine Datei, so dass dies gibt Ihnen mehr Flexibilität. Jedoch lässt sich der Prozess schwieriger, denn alles wird gespeichert als bytes, und das bedeutet, Sie müssen vorsichtig sein, um Ihre lese-und schreib-Prozesse arbeiten zusammen.
Nun, Sie können auch einen Blick in Externer Speicher, aber ich weiß nicht empfehlen, dass in diesem besonderen Fall, weil der externe Speicher kann nicht sein, es später. (Beachten Sie, dass wenn Sie diesen pick, Bedarf es einer Genehmigung)
InformationsquelleAutor der Antwort gobernador
OP fragt nach einer "speichern" - Funktion, die mehr ist als nur die Erhaltung von Daten über die Ausführung des Programmes, das Sie tun müssen, damit die app nichts Wert.)
Empfehle ich das speichern der Daten in einer Datei auf der SD-Karte, die ermöglicht es Ihnen, nicht nur rufen Sie es später, aber dem Benutzer ermöglicht, montieren Sie das Gerät wie ein externes Laufwerk auf dem eigenen Rechner, und nehmen Sie die Daten für die Nutzung an anderen Orten.
So dass Sie wirklich brauchen eine multi-point-system:
1) Implementieren Sie
onSaveInstanceState()
. In dieser Methode, Sie übergeben ein Bundle, das ist im Grunde wie ein Wörterbuch. So viele Informationen speichern, die in dem bundle so, wie es erforderlich wäre, um die app starten genau da, wo es aufgehört hat. In IhremonCreate()
Methode, überprüfen der übergebenen bundle ungleich null sind, und wenn ja, ist die Wiederherstellung des Zustandes aus dem bundle.2) Umsetzung
onPause()
. In dieser Methode erstellen Sie ein SharedPreferences-editor und verwenden Sie es, zu retten, was Staat, die Sie benötigen, um starten Sie die app bis zum nächsten mal. Dieser besteht hauptsächlich aus den Präferenzen von Nutzern (daher der name), aber alles andere relavent, um die app-start-up-Zustand gehen sollte. Ich würde nicht store punktet hier, nur die Sachen, die Sie benötigen, um die app starten. Dann, inonCreate()
, wenn es keinen bundle-Objekt, verwenden Sie die SharedPreferences-Schnittstelle, um an diese Einstellungen.3a) Als auch für Dinge wie Noten, die Sie Folgen konnte Mathias die Beratung über das speichern der Noten in das Verzeichnis zurückgegeben, in
getFilesDir()
mitopenFileOutput()
usw. Ich denke, dass dieses Verzeichnis privat in der app und lebt in Haupt-Speicher, was bedeutet, dass andere apps und den Benutzer nicht auf die Daten zugreifen. Wenn das ok mit Ihnen, dann ist dies wahrscheinlich der Weg zu gehen.3b) Wenn Sie nicht möchten, dass andere apps oder dem Benutzer den direkten Zugriff auf die Daten, oder wenn die Daten sehr groß ist, dann die SD-Karte ist der Weg zu gehen. Wählen Sie ein Verzeichnis Namen wie com/user1446371/basketballapp/zur Vermeidung von Kollisionen mit anderen Anwendungen (es sei denn, Sie sicher sind, dass der app-name ist ziemlich einzigartig), und erstellen Sie das Verzeichnis auf der sdcard. Mathias wies darauf hin, sollten Sie zunächst bestätigen, dass die SD-Karte montiert ist.
Empfehle ich eine einfache CSV-Dateien für Ihre Daten, so dass andere Anwendungen Lesen Sie leicht.
Natürlich werden Sie schreiben müssen Aktivitäten, die es ermöglichen, "speichern" und "öffnen" - Dialoge. Ich in der Regel nur Anrufe tätigen, um die openintents file manager und lassen Sie es die Arbeit machen. Dies erfordert, dass der Benutzer installieren Sie die openintents file manager, um diese Funktionen verwenden, jedoch.
InformationsquelleAutor der Antwort Edward Falk
In onCreate:
In onDestroy oder äquivalent:
InformationsquelleAutor der Antwort Martin.Martinsson
Verwenden SharedPreferences, http://developer.android.com/reference/android/content/SharedPreferences.html
Hier ein Beispiel:
http://developer.android.com/guide/topics/data/data-storage.html#pref
Wenn die Daten-Struktur ist komplexer, oder die Daten zu groß ist, verwenden Sie eine Sqlite Datenbank; aber für die kleine Menge von Daten und mit einer sehr einfachen Datenstruktur, würde ich sagen, SharedPrefs tun wird und ein DB-möglicherweise overhead.
InformationsquelleAutor der Antwort Mathias Conradt
Gibt es eine Menge von Optionen, um Ihre Daten zu speichern und Android bietet Sie jemand gewählt
Ihre Daten-storage-Optionen sind die folgenden:
Gemeinsame Vorlieben
Shop privaten primitiven Daten in Schlüssel-Wert-Paare.
Interner Speicher
Speicherung privater Daten auf den Speicher des Geräts.
Externer Speicher
Speichern öffentliche Daten auf dem freigegebenen externen Speicher.
SQLite-Datenbanken
Speichern von strukturierten Daten in eine private Datenbank.
Netzwerk-Verbindung
Speichern von Daten auf dem web mit Ihrem eigenen Netzwerk-server
Überprüfen hier für Beispiele und tuto
InformationsquelleAutor der Antwort Mohamed ALOUANE
Shared preferences:
android shared-Einstellungen Beispiel für high-scores?
Kann die Anwendung hat Zugriff auf den "externen Speicher-Medien". Wenn es dann funktioniert, können Sie einfach schreiben Sie den Wert (speichern mit timestamp) in eine Datei und speichern Sie es. Der Zeitstempel wird Ihnen helfen, Fortschritte zeigen, wenn es das ist, was Sie suchen. {keine gute Lösung.}
InformationsquelleAutor der Antwort redM0nk
Meiner Meinung nach db4o ist der einfachste Weg zu gehen.
Hier finden Sie ein tutorial:
http://community.versant.com/documentation/reference/db4o-7.12/java/tutorial/
Und hier können Sie die Bibliothek herunterladen:
http://www.db4o.com/community/download.aspx?file=db4o-8.0-java.zip
(Einfach die db4o-8.0...-all-java5.jar in das " lib " - Verzeichnis in Ihrem Projekt den Ordner libs.
Wenn es keine libs-Ordner im Projektverzeichnis erstellen)
Als db4o ist eine objektorientierte Datenbank-system können Sie direkt speichern Sie die Objekte in die Datenbank und später bekommen Sie Sie zurück.
InformationsquelleAutor der Antwort fivef
Bitte vergessen Sie nicht eine Sache - die Interne Speicherung der Daten werden gelöscht, sobald Sie die app deinstalliert. In einigen Fällen kann es sein "unexpected feature". Dann ist es gut zu verwenden externer Speicher.
Google docs über Lagerung - Bitte schauen Sie sich insbesondere an getExternalStoragePublicDirectory
InformationsquelleAutor der Antwort user2707175