SharedPreferences 介紹

透過紀錄與未來的自己對話
前言
偏好設定 (SharedPreferences),簡單的儲存資料透過 .xml 檔的格式,並且可以重複讀取,不會因為程式關閉後資料就消失,儲存在 data/data/applicationId 的目錄下,可透過程式碼讀取或開啟 .xml 檔來做查看.

如何簡單的儲存?

設定檔案的名稱,根據要儲存的資料來設定 KEY NAME

儲存資料

顯示 .xml 格式

Tip : 如何把 code 拉出來,單獨做成一個 function

1. 全選整段code

Ctrl + Alt + m

2. 編輯視窗 Extract Method


3. 設定 function 名稱,底部 Signature Preview 會顯示設定結果,點選 Refactor 完成


4. 自動把程式碼抽出 Extract method


如何透過程式碼讀取儲存結果?
1. 透過 KEY 取得

定義一個參數存放資料,如果 KEY 中沒有資料,會顯示設定的 defValue

Log 印出資料

結果
2. 透過 getAll() 取得

透過 for-loop 顯示資料

Log 印出結果

為什麼 getSharePreferences() 要使用 MODE_PRIVATE ?


網路上比較舊的文章,會顯示 mode 可以設定的模式有 4 個 分別為 :

MODE_PRIVATE, 
MODE_WORLD_READABLE, 
MODE_WORLD_WRITEABLE,
MODE_MULTE_PROCESS

READABLE, WRITEABLE 介紹 deprecated in API level 17


MODE_MULTI_PROCESS deprecated in API level 23

如何刪除, 修改儲存的內容?

Warning : APP 移除,檔案會消失.重新安裝 APP 後不會把檔案讀取回來.

1. 移除整個 PREFS_FILE 資料


執行後,讀取資料皆顯示 def Value

2. 移除單一個 KEY 中的資料


填入想要移除的 KEY NAME

SCREEN SIZE, WEIGHT 值被清除

3. 修改儲存內容,把值重新填入


如何查看 SharedPreferences 檔案?

開啟 APP 後,打開 Device File Explorer,並開啟 data/data 路徑資料夾

選擇 applicationId 名稱 -> shared_prefs -> 儲存的檔案,如果有
多個檔案會顯示在列表中

可以直接查看儲存的檔案

如何監聽資料變化?

紅框處為監聽 Listener,下方為資料更改的部分

Listener 可以取得 key 跟 sharedPreferences 實體

Log 內容

沒有使用時要解除註冊

最後一個很重要的問題?
以上的 code 處理方式並不是很恰當,如果在 10 個地方都有使用到 SharedPreferences,那麼就 new 出了 10 個 SharedPreferences 實體出來,這個寫法並不聰明.可以寫一個 singleton 並在 APP Application 初始化,在需要使用時透過 getInstance 來取得.這個部分網路上有很多檔案可以搜尋到.

END

後記:如果這篇文章對你有幫助,可以幫忙分享給更多人知道.文章內容有誤,也可以在下方留言通知我.另外可以訂閱這個 Blogger,如果有 Andoird 技術相關的文章就可以立刻收到通知.

留言

熱門文章

TourCard 開通全紀錄 台胞證 支付寶

svn 刪除使者資訊 & 查看使用者帳號密碼