2010-07-08 73 views
9

我在Android上開發了一款遊戲。我目前將大部分遊戲統計數據保存在數據庫中。但是,該應用程序不會在數據庫中使用多於一行。我現在有興趣介紹一些新的統計數據,但這會導致我的數據庫重新安裝,從而清除每個人的進度。爲了避免這種情況發生,我正在考慮使用SharedPreferences來存儲遊戲統計信息。我的問題是有多少不同的東西可以在問題出現之前以這種方式進行存儲。總的來說,我將存儲大約40個值,所有整數。Android SharedPreferences限制?

+0

40整數都可以存儲在SharedPreferences中 – 2017-03-28 21:42:16

回答

18

SharedPreferences被寫入xml文件,所以Android上文件的最大大小是SharedPreferences xml文件的大小。我可以放心地說,40個整數值不會成爲問題。

SharedPreferences文件中的最大值限制爲您嘗試存儲的最大值。 (這意味着你不能把一個字符串值比字符串長,可以在Java中。)

我建議的唯一的事情就是確保儘可能地批量編輯(意思是不要每個改變.commit() ),也不要爲每個更改創建一個新的編輯器。 (這些只是良好的做法。)

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

「長於字符串可以使用Java」 - 字符串可以有2^31 - 1 = 20億個字符。那麼,那可能就要依靠手機的內部存儲了。 – 2015-06-05 16:09:50

7

我不知道任何限制,但關於你的問題,每個人的進展正在消失。您可以覆蓋SQLite類中的onUpgrade方法,然後將每個數據遷移到較新的數據庫。

+2

正確。查看記事本示例 - 您可以使用ALTER TABLE添加新列。或者你可以添加一個全新的表格。您可以切換到SharedPreferences,但由於您已經使用了數據庫方法,因此您可以堅持使用它。 – EboMike 2010-07-08 08:32:24

+0

我想我會嘗試SharedPreferences模型,看看我更喜歡哪一個。我會保留數據庫,因爲在某些時候我打算允許多個保存的遊戲。感謝Alter Table的提示,它將幫助我遷移到SharedPreferences並保存每個人的進度。 – Tim 2010-07-08 22:17:40