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);