一、SharedPreference介绍
SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置相关的参数。SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data/包名/shared_prefs目录下。
二、如何使用SharedPreference类进行数据的保存及读取操作
1、getSharedPreferences(name, mode)方法介绍
通过getSharedPreferences(name, mode)获取到SharedPreferences类,该方法是属于Context 的。name和mode两个参数的介绍:
mode: Operating mode. Use 0 or
MODE_PRIVATE
for the default operation,MODE_WORLD_READABLE
andMODE_WORLD_WRITEABLE
to control permissions. The bitMODE_MULTI_PROCESS
can also be used if multiple processes are mutating the same SharedPreferences file.MODE_MULTI_PROCESS
is always on in apps targetting Gingerbread (Android 2.3) and below, and off by default in later versions.指定文件的操作模式,共有四种操作模式。
四种操作模式分别为:
1. MODE_APPEND: 追加方式存储(= 0x8000)
2. MODE_PRIVATE: 私有方式存储,其他应用无法访问。是默认的操作模式 (= 0x0000)
3. MODE_WORLD_READABLE: 表示当前文件可以被其他应用读取(= 0x0001)
4. MODE_WORLD_WRITEABLE: 表示当前文件可以被其他应用写入(= 0x0002)
MODE_MULTI_PROCESS:当使用SharedPreference实现多个应用之间数据共享时,需要设置该模式。具体的使用在单点登录的实现中会有介绍。Android 2.3以前的版本,MODE_MULTI_PROCESS是默认开启的,之后版本需要显示开启。SharedPreferences preferences = getSharedPreferences("sp", FLAG);
boolean loginState = preferences.getBoolean(LOGIN_STATE, false);
2、edit()方法获取editor对象
Editor editor = sharedPreferences.edit();
editor存储对象采用key-value键值对进行存放,editor.putString("name", "value");
通过commit()方法提交数据。例如
//FLAG是模式。可以用int类型的数代替。如FLAG=3代表FLAG= MODE_WORLD_READABLE+MODE_WORLD_WRITEABLE
SharedPreferences preferences = getSharedPreferences("sp", FLAG);
preferences.edit().putBoolean("state", true).commit();
获取相对于的数据的方法:
SharedPreferences preferences = getSharedPreferences("sp", FLAG);
boolean value = preferences.getBoolean("state",false);//如果没有取到,默认为false
3、多应用之间共享SharedPreference文件数据
如果要访问其他应用中的Preference,必须满足的条件是,要访问的应用的Preference创建时指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE权限。具体的使用会有一个实现单点登录的小例子中用到,在下一篇文章中会有详细的介绍。