2010-07-08 15 views
9

Ich habe ein Spiel für Android entwickelt. Derzeit speichere ich die meisten Spielstatistiken in einer Datenbank. Die App verwendet jedoch nicht mehr als eine einzelne Zeile in der Datenbank. Ich bin jetzt daran interessiert, einige neue Statistiken einzuführen, aber das wird meine DB veranlassen, neu zu installieren und damit alle Fortschritte zu klären. Um dies in Zukunft zu vermeiden, überlege ich, die Spielstatistiken stattdessen mit SharedPreferences zu speichern. Meine Frage ist, wie viele verschiedene Dinge auf diese Weise gespeichert werden können, bevor es zu einem Problem wird. Insgesamt würde ich ungefähr 40 Werte speichern, alle Ganzzahlen.Android SharedPreferences Einschränkungen?

+0

40 ganze Zahlen sind in Ordnung für in den SharedPreferences Speicherung –

Antwort

18

SharedPreferences werden in XML-Dateien geschrieben, so dass die maximale Größe einer Datei unter Android der Größe einer SharedPreferences XML-Datei entspricht. Ich kann sicher sagen, dass 40 ganzzahlige Werte kein Problem sein werden.

Die maximale Größe eines Werts in einer SharedPreferences-Datei ist auf die maximale Größe des Werts beschränkt, den Sie speichern möchten. (Dies bedeutet, dass Sie keinen String-Wert eingeben können, der länger ist als Strings in Java sein können.)

Die einzige Sache, die ich vorschlagen würde, ist sicherzustellen, die Änderungen so viel wie möglich zu Batch (dh nicht jede Änderung .commit())) und erstellen Sie auch keinen neuen Editor für jede Änderung. (Dies sind nur gute Praktiken.)

SharedPreferences settings = getSharedPreferences(PREFS_FILE_NAME, 0); 
SharedPreferences.Editor editor = settings.edit(); 
editor.putInt("firstValue", mFirst); 
editor.putInt("secondValue", mSecond); 
editor.putInt("thirdValue", mThird); 

// Commit the edits! (As infrequently as possible) 
editor.commit(); 
+3

"länger als Strings in Java sein können" - Strings können 2^31 - 1 = 2 Milliarden Zeichen haben. Nun, das kann dann auf den internen Speicher des Telefons beruhen. –

7

Ich weiß nicht über irgendwelche Beschränkungen, aber in Bezug auf Ihr Problem mit jedem Fortschritt wird ausgelöscht. Sie können die onUpgrade-Methode in Ihrer SQLite-Klasse überschreiben und dann alle Daten in die neuere Datenbank migrieren.

+2

Genau. Sehen Sie sich die Notepad-Beispiele an - Sie können ALTER TABLE verwenden, um neue Spalten hinzuzufügen. Oder Sie könnten eine ganz neue Tabelle hinzufügen. Sie könnten zu SharedPreferences wechseln, aber da Sie sich bereits für einen Datenbankansatz entschieden haben, können Sie sich auch daran halten. – EboMike

+0

Ich denke, ich werde das SharedPreferences-Modell ausprobieren und sehen, was ich mehr mag. Ich behalte die DB aber, weil ich irgendwann mehrere gespeicherte Spiele zulassen möchte. Danke für den Tipp über Alter Table, es wird mir dabei helfen, zu SharedPreferences zu migrieren und den Fortschritt aller zu speichern. – Tim

Verwandte Themen