SharedPreferences是Android編程獨有的一種文件存儲方式,十分便利,操作友好。其工作原理是在/data/data/com.xxx.test/shared_prefs目錄下面生成一個xml檔案,以便數據讀寫。
不過,需要注意的是,官方目前推薦“只有相同user ID的process才能訪問這個xml檔案”,基本是就是“只允許程序自身對其讀寫”,這個xml的權限爲“660” (-rw-rw----)。官方推薦默認屬性“MODE_PRIVATE”, 其他如 MODE_WORLD_READABLE/MODE_WORLD_WRITEABLE/MODE_MULTI_PROCESS,官方均不推薦使用。
對SharedPreferences操作也十分方便,下面分別看看寫/讀SharedPreferences的代碼。
1. SharedPreferences寫入
分爲3步,
1.1 調用SharedPreferences.Editor()方法,
1.2 向SharedPreferences.Editor()寫入數據,如putBoolean()寫入布爾類型,putString()寫入字符串類型,其他還有方法putStringSet()/putInt()/putLong()/putFloat()等,
1.3 調用commit()或者apply()寫入磁盤空間。
示例代碼如下,
SharedPreferences pref = getSharedPreferences("start", MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putBoolean("isAutoStart", false);
editor.putInt("autoStartWaitTime", 5);
editor.putBoolean("isConfirmRestart", false);
editor.commit();
生成的xml如下,
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<int name="autoStartWaitTime" value="5" />
<boolean name="isConfirmRestart" value="false" />
<boolean name="isAutoStart" value="false" />
</map>
2. SharedPreferences讀出
SharedPreferences讀出則更簡單寫,首先初始化SharedPreferences對象,然後呼叫一系列的get方法,如getBoolean()/getInt()等。
示例代碼如下,
SharedPreferences pref = getSharedPreferences("start", MODE_PRIVATE);
boolean isAutoStart = pref.getBoolean("isAutoStart", false);
int autoStartWaitTime = pref.getInt("autoStartWaitTime", 0);
boolean isConfirmRestart = pref.getBoolean("isConfirmRestart", false);
Log.d(TAG, "isAutoStart is " + isAutoStart);
Log.d(TAG, "autoStartWaitTime is " + autoStartWaitTime);
Log.d(TAG, "isConfirmRestart is " + isConfirmRestart);