SharedPreferences 首选项浅析(一)

来源:互联网 发布:淘宝设计师学徒招聘 编辑:程序博客网 时间:2024/06/05 10:43

        在Android数据存储方式中SharedPreferences是比较简单的一种文件存储。一般用于应用的配置信息的存储。由于SharedPreferences用法比较简单,废话不多说,我们直接进入正题。

我们先看看SharedPreferences可以存储的数据的类型:String,int,Double,Long,boolean,set集;

存储数据

Set<String> set = new HashSet<String>();for (int i = 0; i < 3; i++) {set.add("set" + i);}//SharedPreferences share = this.getSharedPreferences("my_sharedpreferences", Context.MODE_PRIVATE);Editor editor = share.edit();editor.putBoolean("val_boolean", true);editor.putString("val_string", "小明");editor.putFloat("val_float", 11);editor.putInt("val_int", 12);editor.putLong("val_long", 13);editor.putStringSet("val_set", set);editor.apply();

下面截图就是我们在my_sharedpreferences.xml文件中存储的数据:


获取数据:(其中第二个参数都是默认值)

SharedPreferences share = this.getSharedPreferences("my_sharedpreferences", Context.MODE_PRIVATE);share.getString("val_string", "");share.getBoolean("val_boolean", true);share.getFloat("val_float", 0);share.getInt("val_int", 0);share.getLong("val_long", 0);share.getStringSet("val_set", set);

        上面分别存储了SharedPreferences所能存储的所有类型值,调用很简单首先初始化SharedPreferences  并不是通过new一个对象,而是通过this.getSharedPreferences(name, mode)实例化(具体为什么这么实例化我会在接下来的文章结合源码里给大家解析)。这里的this是当前Activity的上下文context,或者是自定义的Application的实例,这两者是没有区别的,因为他们最终会都会调用到Context类里的抽象方法getSharedPreferences(String name, int mode)。这个方法里需要两个参数,第一个是我们想要保存到文件的文件名。第二个是运行模式,官方给出四个参数(一般使用MODE_PRIVATE模式就足够了):

        MODE_PRIVATE:文件的默认编辑模式,值为0。在这个模式下存储文件只能被当前应用访问,或者被别的应用获取到当前应用Context的实例也可以访问。

        MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE:控制其他应用是否有权限来读写文件,他们的值分别为1和2。(目前官方不推荐使用这两种模式了,使用         MODE_MULTI_PROCESS可以代替。)

        MODE_MULTI_PROCESS:允许其他的进程访问文件,值为4,

注意:

       1、除了这四种模式有的还有使用MODE_APPEND这种模式的(值为32768),这种模式会使你写入的内容追加在原来的数据后面,而MODE_PRIVATE模式会覆盖原来的内容。

       2、无论在哪种模式,都会先判断你传入的文件名称是否存在假如不存在则会新建文件。


这里获取Editor对象来操作数据,主要是对数据增、删、改。添加数据和修改数据上面已经给出。

删除其中特定一条数据

SharedPreferences share = this.getSharedPreferences("my_sharedpreferences", Context.MODE_PRIVATE);Editor editor = share.edit();editor.remove("val_string");editor.apply();


清空文件里的所有数据

SharedPreferences share = this.getSharedPreferences("my_sharedpreferences", Context.MODE_PRIVATE);Editor editor = share.edit();editor.clear();editor.apply();


数据提交

        Editor有两种数据提交方式第一种是commit(),第二种是apply()方法。这两种方法有本质的区别:首先第一个commit()提交后有一个boolean返回值,这个返回值表明数据是否提交成功,而apply()没有返回值。第二个区别是apply()提交数据后首先会提交到内存中而后异步提交到磁盘中,commit()提交数据时是内存和磁盘同步提交。


新建Sharedpreferences文件

        新建文件很简单,只要调用getSharedpreferences(String name, int mode);方法假如你传入的文件名不存在则会用传入的名称新建一个文件,这里注意的是在Activity中也可以使用this.getPreferences(mode);获取SharedPreferences 实例,但是用这个方法操作的文件是以当前类名为名称的文件(在Application中不能调用这个方法)。


文件Sharedpreferences的位置

        这个文件是和我们应用安装的位置绑定的,一般都放在系统文件根目录下:/data/data/应用包名/shared_prefs/文件名.xml。例如我的应用包名是com.android.android.sharedpreferences_1;我存储的SharedPreferences文件名是my_sharedpreferences 那么问的文件路径就是/data/data/com.android.android.sharedpreferences_1/shared_prefs/my_sharedpreferences.xml。这里我们的应用其实就是安装在/data/data文件夹下的。另外想要读取到这个文件你的手机必须拥有超级管理员权限也就是我们所说的root权限。


        好了,Sharedpreferences基本使用就这些也不是很复杂,下一篇我们将从源码的角度进一步解析。


0 0
原创粉丝点击