Android SharedPreference最佳實踐

fhdis發表於2014-08-21

Android提供多種方式儲存應用資料,其中一種方式是SharedPreferences,使用鍵值對儲存私有基本的資料。所有的邏輯僅基於以下三個類:

SharedPreference

SharedPreference在這三個類是最重要的,負責獲取(解析)儲存資料。提供獲取物件的編輯介面,在OnSharedPreferenceChangeListener中提供增加移出物件的介面。

  • 建立SharedPreference物件,需要上下文物件(可以是應用程式的上下文)。
  • getSharedPreferences 方法解析配置檔案並建立相關的物件對映。
  • 通過上下文有多種建立它,強烈建議使用MODE_PRIVATE。因為建立一個可讀寫的檔案是非常危險的,容易在應用中產生安全漏洞。

Editor

SharedPreferences.Editor是用來修改SharedPreferences物件值的介面。你在editor 做出的修改都是待處理的,並沒有被複制到SharedPreferences裡,直到你呼叫commit()或apply()修改才會被執行。

  • 使用簡單的介面在Editor放入值。
  • 同步儲存資料使用commit() 方法或者非同步儲存資料使用apply()方法會更快點。實際上不同的執行緒使用commit()會更快點,這是我喜歡使用commit()方法的原因。
  • 移出資料使用remove()方法,清除所有資料使用clear()方法。

效能和注意事項

SharedPreferences是單例物件,你可以很容易獲取你想要的引用。只在你第一次呼叫getSharedPreferences方法時開啟檔案時,建立一個例項物件。

SharedPreferences 是單例物件,你可以改變它的例項,不用擔心同一個物件資料會不同。

當你第一次呼叫get方法時,它解析物件並把放入map中,第二次獲取資料從map 中獲取,不需再解析。

記住Preference的資料越大,get、commit、apply、remove和clear方法耗時越長。所以強烈建議把儲存的資料分成小的物件。

當你的應用更新以後,你的Preferences不會被移除。所以有些情況下需要建立遷移資料的方案。比如,在應用啟動的時候,你的應用解析本地JSON資料,實現這個你需要做的僅僅是儲存標誌資料(該資料是否為本地資料)。一段時間後,你更新JSON資料釋出新的版本,使用者會更新應用程式但是不會下載新的JSON資料,因為已經在本地儲存了。

SharedPreferences 資料儲存在app資料夾下的xml檔案下。

Android指南

示例程式碼

本文程式碼可以在github上找到。

相關文章