2016-08-19 6 views
0

Also mache ich eine Wetter App und ich fand, wenn die App zu lange im Leerlauf ist und zerstört, dass die Prognosedaten verloren gehen. Daher denke ich, dass die beste Lösung darin besteht, die Daten im internen Speicher zu speichern und sie bei Bedarf wiederherzustellen.Android Schreibklasse in den internen Speicher

Die Klasse, die die Daten enthält, hat 2 Arrays anderer Datenklassen und enthält alle Strings, Ints und Doubles.

Was ist der beste Weg, um diese Daten zu speichern? Die Optionen, die ich gesehen habe, sind eine Einstellungsdatei oder sie in einer Datei im lokalen Speicher zu speichern.

Ich dachte nicht, dass die Voreinstellungsdatei funktionieren würde, weil es so klingt, dass mehr für kleinere Datenmengen gedacht ist.

Ich habe versucht, in lokalen Speicher zu speichern, aber das ist nicht gut gelaufen. Sie sind nicht sehr damit vertraut, Bytes manuell in einer Datei zu speichern, und die Android-Entwicklerhandbücher sind nicht sehr umfassend. Ich habe versucht, es zu serialisieren, bekomme aber den nicht serialisierbaren Fehler. Was das Schreiben der Bytes betrifft, so habe ich es richtig geschrieben, indem ich mit getBytes Strings in Bytes umwandelte, die Ints speicherte und Doubles in Strings umwandelte, dann mit getBytes. Ich bin mir nicht sicher, ob das überhaupt der richtige Weg ist, und ich bin mir nicht sicher, wie ich die Bytes lesen soll, weil man eine bestimmte Anzahl davon lesen muss. Muss ich herausfinden, wie viele Bytes jede Art von Daten sein wird? Zum Beispiel, um den Typ der Zeichenfolge zu finden, die die Anzahl der Bytes für diesen Datentyp codiert und liest?

Was wäre der beste Weg, um dies zu tun? Soll ich nur die Einstellungsdatei verwenden? Kann mir jemand entweder sagen, wie oder wieso ich auf eine Ressource zum Lesen von Daten aus einer Datei wie dieser? Jede Hilfe wäre willkommen.

+0

haben Sie SQLite versucht? – HendraWD

+0

Hatte keine Erfahrung mit Datenbanken, nächste Sache zu studieren. Ich kann mir vorstellen, dass das wahrscheinlich der beste Weg ist. Ich habe das serialisierbare Problem herausgefunden, also denke ich, dass ich auf alles aufgepasst habe. Danke für den Vorschlag. – jBob

Antwort

0

Ich neige dazu, Präferenzen für unterschiedliche Datenmengen zu verwenden. Gemeinsame Voreinstellungen werden in einer XML-Datei gespeichert. Hier ein Beispiel:

SharedPreferences.Editor editor = context.getSharedPreferences("pref_name", Context.MODE_PRIVATE).edit(); 
editor.putString("name", value); 
... // add all your other items here to save 
editor.commit(); 

Um die Daten zu erhalten nur etwas tun, wie folgt aus:

SharedPreferences preference = context.getSharedPreferences("pref_name", Context.MODE_PRIVATE); 
preference.getString("name", defaultValue); 

Es ist ziemlich einfach und leicht zu bedienen. Ich speichere manchmal große Datenmengen. Für diese werde ich normalerweise die Daten in json konvertieren und dann dieses json als String speichern. Wenn ich die Daten bekomme, konvertiere ich von json nach java.

Eine weitere Möglichkeit ist die Verwendung einer SQLite-Datenbank und die Speicherung aller Daten dort. Es gibt viele Anleitungen und Dokumentationen zum Speichern in einer Datenbank.

Hier ist ein großer lesen Sie zu erhalten begonnen: https://developer.android.com/guide/topics/data/data-storage.html

+0

Danke für die Info, das ist wirklich hilfreich. Ich habe nie daran gedacht, es als JSON-Datei zu speichern, das ist eine gute Idee. Und nach dem, was ich gelesen habe, scheinen viele Leute die Präferenzen zu verwenden. Und was SQL angeht, das ist eine Sache, die ich als nächstes wirklich lernen muss: Datenbanken. Ich landete das Speichern in Datei als serializeable zu arbeiten. Ich vermute, das Problem war, dass ich versuchte, Arrays zu speichern, also habe ich am Ende nur die einzelnen Objekte im Array mit einer Schleife geschrieben und funktioniert jetzt gut. Ich mache das zum Üben, also denke ich, ich werde weitermachen und die Dinge versuchen, die du vorgeschlagen hast. Danke nochmal für die Info. – jBob

+0

Ja json macht es einfacher mit den Objekten zu arbeiten. Es gibt einen Treffer, wenn Sie zwischen json und java konvertieren müssen. Ich neige dazu, nur Json zu verwenden, wenn ich eine Liste von Objekten habe.Mit gemeinsamen Vorlieben benutze ich auch gerne Dolch. Überprüfen Sie das, wenn Sie Zeit haben. –

Verwandte Themen