tags: APP
Android
Common 簡介
- 若想要儲存簡單資料,可使用android.content.SharedPreferences類別
- 儲存一些 key 與 value 的對應資料 (只限基本型態的資料)
- 資料的儲存格式是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", "");
專案範例
- SharedPreferencesExample 專案
https://github.com/SpicyBoyd/AndroidStudioClass/tree/master/SharedPreferencesExample - GIVEMEPASS’S ANDROID惡補筆記
http://givemepass.blogspot.tw/2011/11/sharedpreferences.html
Extensive Reading 延伸閱讀
- Processes and Threads:
https://developer.android.com/guide/components/processes-and-threads - 實務練習,怎麼讓APP記住我的登入帳號? Atm專案
https://litotom.com/2017/07/11/ch7-3-save-account/
Reference 參考資料
- SharedPreferences 圖示:https://eluminoustechnologies.com/blog/2016/10/sharedpreference-in-android/
- 使用 SharedPreferences 來儲存名稱與值 (key/value) 的對應資料:
http://android-deve.blogspot.tw/2012/11/sharedpreferences-keyvalue.html - 使用SharedPreferences存取設定資料:
https://litotom.com/2017/06/27/ch7-1-sharedpreferences/ - Save key-value data 官方文件:
https://developer.android.com/training/data-storage/shared-preferences - SharedPreferences 官方文件:https://developer.android.com/reference/android/content/SharedPreferences
- SharedPreferences.Editor 官方文件:https://developer.android.com/reference/android/content/SharedPreferences.Editor
沒有留言:
張貼留言