2013-05-13 87 views
0

我在Android上製作了一個Tetris遊戲作爲學校的項目,現在我使用共享偏好來保存遊戲的當前狀態,以便在稍後時間恢復,我已經意識到,當你存儲超過100個偏好時,sharedprefernces對象開始以一種奇怪的方式工作,我可以保存所有內容,但是當我嘗試調用編輯器清除它(e.clear + e.commit)時刪除偏好。Java Android SharedPreferences問題

我希望得到任何幫助就這個問題

感謝

+0

你可以發佈你的代碼嗎?你有一些錯誤嗎? – Elior 2013-05-13 08:18:02

+0

您可以閱讀http://stackoverflow.com/q/7420633/1321873獲取良好建議 – Rajesh 2013-05-13 08:19:30

回答

0

如果需要刪除特定的值,使用此: SharedPreferences.Editor.remove()其次commit()

要刪除所有SharedPreferences.Editor.clear()接着是commit()

(參考文獻https://stackoverflow.com/a/3687333/1584654)。

但是,如果值保持限制,對於共享首選項應該不是問題。

1

SharedPreferences是很好和輕量級的機制如何堅持數據。

但我認爲對於遊戲來說這不是一場勝利。 SharedPreferences通常用於保存非結構化數據,例如,如果您有一些需要登錄的應用程序,並且用戶成功登錄,則可以將此狀態保存爲SharedPreferences,然後在Activities中檢查用戶是否已登錄。但是在遊戲中你有(我想肯定)結構化的數據結構(例如玩家和他們的屬性(值),比如達到分數,失敗,勝利等)。

所以我建議你考慮一下數據持久化的另一種機制。特別是嘗試考慮使用經典對象序列化的可能性或使用SQLiteDatabase,它們提供了更復雜的解決方案,如何堅持結構化數據。

一個主要優點是你可以持久化(序列化)整個對象,然後簡單地反序列化它們(而不是將它們作爲SharedPreferences中特定的「塊」來持久化)。關於SQLite,它提供了與傳統序列化幾乎相同的解決方案,但對象在數據庫中表示爲表格。