【Android】Shared Preferences 簡易型資料庫

前言

起初再開發APP時發現到,很多Activity都有宣告相同變數,原先都是利用Bundle把值代到下一個Activity,但總覺得這方法有點不好,於是去Google看看有什麼方法可以把變數値存下來,這邊大致總結有5種方法:

  1. 使用static變數 – 先告一個靜態變數,其他Activity可直接用他 (通常不推薦,除非特殊需求)
  2. 使用Text檔案 – 產生一個txt把值存在裡面 (通常不推薦,除非特殊需求)
  3. SharedPreferences – 會產生XML來存取資料以Key-Value方式(本篇介紹)
  4. Global Variable 使用Application Context来保存全域變數
  5. SQLite – 本地資料庫,視情況使用

1.Shared Preferences

Shared Preferencesf是一個非常簡單又好用的東西,不僅能當作全域變數來使用,也能當簡易型資料庫來使用,因為他不會因為關閉APP而造成資料流失。

建立

透過getSharedPreferences來建立或取得XML,當執行getSharedPreferences系統就會在/data/[package.name]/shared_prefs/建立一個xml檔案,此方法需要傳入兩個參數getSharedPreferences(String name, int mode)
name為XML檔案名稱
mode可以是以下三參數

  1. MODE_PRIVATE : 只有此程式可以存取
  2. MODE_WORLD_READABLE : 其它程式也可以讀取 ( API level 17 中被拋棄了)
  3. MODE_WORLD_WRITEABLE : 其它程式可以寫入  ( API level 17 中被拋棄了)

儲存or修改

接著依照要你要存入的參數型態來使用put,例如putString(key,value)

移除

移除對應的KEY資料

取得

透過key取出對應的資料,注意資料型態,另外需要給予一個預設值,當沒有對應key時就能避免發生null

2.實際演練

延用【計算BMI値】範例。改用Shared Preferences來傳遞身高、體重,並記錄BMI値,當下一次計算時會帶出上一次BMI値。

MainActivity輸入身高、體重利用Shared Preferences記錄下來

CountBMI取出Shared Preferences身高、體重去計算BMI值並記錄下來,當下一次操作時會帶出上一次輸入的BMI值

 

 

 

發表迴響