Android开发 - 存储辅助类 SharedPreferences 解析
SharedPreferences简介
-
SharedPreferences是Android平台上一个轻量级的存储辅助类,用来保存应用的一些常用配置。SharedPreferences的数据以键值对(key, val)的进行保存在以xml形式的文件中。在应用中通常做一些简单数据的持久化缓存
-
从editor的put方法可以看出SharedPreferences提供了String,set,int,long,float,boolean六种数据类型,editor类核心方法:
-
getSharedPreferences(String name, int mode)
:- 参数解析:
- name:存储文件名字
- mode:存储方式;取值如下:
- Context.MODE_PRIVATE:指定该SharedPreferences数据只能被本应用程序读、写
- Context.MODE_WORLD_READABLE:指定该SharedPreferences数据能被其他应用程序读,但不能写
- Context.MODE_WORLD_WRITEABLE:指定该SharedPreferences数据能被其他应用程序写,但不能读
- Context.MODE_APPEND:该模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件
- 参数解析:
SharedPreferences使用
增加数据
-
代码实例:
//通过对应存储文件名得到要操作的SharedPreferences对象 SharedPreferences sharedPreferences = getSharedPreferences("user",MODE_PRIVATE); //获取Editor对象的引用 SharedPreferences.Editor editor = sharedPreferences.edit(); //将值以键值对(key, val)格式放入文件 editor.putString("name", "lucas"); editor.putInt("age", 30); editor.putBoolean("islogin",true); // 提交数据 editor.commit();
-
点击添加按钮以后我们可以看到在
data/data/应用程序包名/shared_prefs
文件夹下生成了一个user.xml
的xml文件。点击可以打开该文件,可以看到该文件保存了如下的数据<?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <string name="name">lucas</string> <int name="age" value="30" /> <boolean name="islogin" value="true" /> </map>
-
效果展示
读取数据
-
读取数据可以通过获取
SharedPreferences
对象,通过SharedPreferences
对象可以获取存储的数据值,第二个参数一般是个默认值,表示当获取数据的时候没有该key则返回一个默认值SharedPreferences sharedPreferences = getSharedPreferences("user", MODE_PRIVATE); String name = sharedPreferences.getString("name",""); int age = sharedPreferences.getInt("age",0); boolean islogin = sharedPreferences.getBoolean("islogin",true); Log.i("lucashu","name:"+ name +" age:" + age +" islogin:" + islogin);
删除数据
-
删除数据跟增加数据有点类似 也是通过
Editor
对象来完成//通过对应存储文件名得到要操作的SharedPreferences对象 SharedPreferences sharedPreferences = getSharedPreferences("user",MODE_PRIVATE); //获取Editor对象的引用 SharedPreferences.Editor editor = sharedPreferences.edit(); //删除key对应的值 editor.remove("name"); // 提交数据 editor.commit();
修改数据
-
修改数据跟增加数据类似,覆盖原来的数据即修改数据。
//通过对应存储文件名得到要操作的SharedPreferences对象 SharedPreferences sharedPreferences = getSharedPreferences("user",MODE_PRIVATE); //获取Editor对象的引用 SharedPreferences.Editor editor = sharedPreferences.edit(); //将新的值放入要修改数据对应的key进行覆盖 editor.putString("name", "lucas1"); editor.putInt("age", 31); editor.putBoolean("islogin",false); // 提交数据 editor.commit();
清除数据
-
可以通过
Editor
对象的clear方法来完成清除数据//通过对应存储文件名得到要操作的SharedPreferences对象 SharedPreferences sharedPreferences = getSharedPreferences("user", MODE_PRIVATE); //获取Editor对象的引用 SharedPreferences.Editor editor = sharedPreferences.edit(); editor.clear(); // 提交数据 editor.commit();
-
清除以后
user.xml
文件并不会删除,但里面的数据都没了