站長留言

  • ✅ 本站維護及更新歷史紀錄,詳情請參考公告
  • ✅ 有任何意見、想法,歡迎留言給Spicy知道喔
  • ✅ 固定於每周一至周五更新Blogger文章,周末不定期
程式Android 安卓

【APP/Android】如何使用 SharedPreferences 儲存簡易資料:寫入 與 讀取

tags: APP Android

Common 簡介

  • 若想要儲存簡單資料,可使用android.content.SharedPreferences類別
    • 儲存一些 keyvalue 的對應資料 (只限基本型態的資料)
  • 資料的儲存格式是XML檔,儲存在手機中每個APP都會有的一個專用目錄下
  • 例如:帳號、設定、上一次登入時間、遊戲關卡或電子郵件等,好讓APP在下一次執行時可讀取到這些上一次儲存下來的資料

Method 常用方法

getSharedPreferences(String name, int mode)

  • 如果存在就將 SharedPreferences 指向該檔案,若不存在則會建立一個新的檔案,並指向該檔案

  • 系統會在 /data/data/[package.name]/shared_prefs/ 目錄底下建立一個 name.xml 的檔案

  • name:檔案名稱

  • mode:讀寫權限,不用背,只要鍵入 M 去找需要的權限即可

    Value Constant 說明
    0 MODE_PRIVATE 常用,只允許該 APP 存取
    1 MODE_WORLD_READABLE 不建議,所有 APP 都能讀取
    2 MODE_WORLD_WRITEABLE 不建議,所有 APP 都能存取、寫入
    4 MODE_MULTI_PROCESS 允許多個 process 同時存取

getPreferences(int mode)

  • 建立一個讓目前的 Activity 使用的 SharedPreferences 檔案 (其他的 Activity 無法使用)
  • 如果存在就將 SharedPreferences 指向該檔案,若不存在則會建立一個新的檔案,並指向該檔案
  • 系統會在 /data/data/[package.name]/shared_prefs/ 目錄底下建立一個 Activity 名稱的 XML 檔

Writing 寫入

  • edit():取得 Editor 物件
  • SharedPreferences.Editor
    • commit():直接將修改的結果寫入檔案
    • apply():修改記憶體中的暫存資料,並以非同步式寫入檔案
    • put基本資料型態(key, value):boolean, float, int, long, String, Set<String>
    • remove(key)
    • clear()
  • Example 範例:
Set<String> set = new HashSet<String>();
set.add("春天"); 
set.add("夏天");

SharedPreferences pref = getSharedPreferences("example", MODE_PRIVATE);
pref.edit()
    .putString("USER", "Boyd")
    .putInt("AGE", 24)
    .putFloat("WEIGHT", 55)
    .putStringSet("SEASON", set);
    .commit();

Reading 讀取

  • get基本資料型態(key, defValue):boolean, float, int, long, String, Set<String>
  • contains(key)
  • Example 範例:
String userid = getSharedPreferences("example", MODE_PRIVATE)
            .getString("USER", "");

專案範例

  1. SharedPreferencesExample 專案
    https://github.com/SpicyBoyd/AndroidStudioClass/tree/master/SharedPreferencesExample
  2. GIVEMEPASS’S ANDROID惡補筆記
    http://givemepass.blogspot.tw/2011/11/sharedpreferences.html

Extensive Reading 延伸閱讀

  1. Processes and Threads:
    https://developer.android.com/guide/components/processes-and-threads
  2. 實務練習,怎麼讓APP記住我的登入帳號? Atm專案
    https://litotom.com/2017/07/11/ch7-3-save-account/

Reference 參考資料

  1. SharedPreferences 圖示:https://eluminoustechnologies.com/blog/2016/10/sharedpreference-in-android/
  2. 使用 SharedPreferences 來儲存名稱與值 (key/value) 的對應資料:
    http://android-deve.blogspot.tw/2012/11/sharedpreferences-keyvalue.html
  3. 使用SharedPreferences存取設定資料:
    https://litotom.com/2017/06/27/ch7-1-sharedpreferences/
  4. Save key-value data 官方文件:
    https://developer.android.com/training/data-storage/shared-preferences
  5. SharedPreferences 官方文件:https://developer.android.com/reference/android/content/SharedPreferences
  6. SharedPreferences.Editor 官方文件:https://developer.android.com/reference/android/content/SharedPreferences.Editor

沒有留言:

張貼留言

本網站建議使用電腦或平板瀏覽