Android中SharedPreferences的总结

时间:2021-05-09 05:29:40

一、SharedPreference介绍

     SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置相关的参数。SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data/包名/shared_prefs目录下。

二、如何使用SharedPreference类进行数据的保存及读取操作

1、getSharedPreferences(name, mode)方法介绍

  通过getSharedPreferences(name, mode)获取到SharedPreferences类,该方法是属于Context 的。name和mode两个参数的介绍:
 
 
name :Desired preferences file. If a preferences file by this name does not exist, it will be created when you retrieve an editor (SharedPreferences.edit()) and then commit changes (Editor.commit()).这是代表文件名的以xml格式存储,命名时不用加.xml后缀名,系统默认使用xml格式存储,如果当前文件没有存在系统会默认的创建该文件(在提交相应修改的时候)。

mode: Operating mode. Use 0 or MODE_PRIVATE for the default operation, MODE_WORLD_READABLE and MODE_WORLD_WRITEABLE to control permissions. The bit MODE_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权限。具体的使用会有一个实现单点登录的小例子中用到,在下一篇文章中会有详细的介绍。