一、SharedPreferences简介。
1、SharedPreferences是一种轻型的存储方式,它的原理是基于xml文件存储key-value键值对数据,通常用来存储一些简单的配置信息。
存储位置:/data/data/{包名}/shared_prefs
目录下。
SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。
2、SharedPreferences对象与SQLite数据库相比,更加的轻量级,不需要创建数据库,创建表,写SQL语句等一系列的操作。美中不足的是SharedPreferences只支持以下几种类型的数据:
boolean、 int 、float、 long、String
3、SharedPreferences本身是一个接口,程序无法直接创建它的实例,只能通过Context提供的getSharedPreferences(String name, int mode)来获取它的实例,该方法的第二个参数支持如下几个值:
· Context.MODE_PRIVATE :只被本地程序读写。
· Context.MODE_WORLD_READABLE :能被其他程序读。
· Context.MODE_WORLD_WRITEABLE :能被其他程序读、写。
4、SharedPreferences的常用方法如下:
· boolean contains(String key) :判断SharedPreferences中是否包含特定key的数据。
· abstract Map<String, ?> getAll()
:获取全部的key-value键值对。
· boolean getXxx(String key, xxx default) : 获取指定key对应的值,如果该key不存在,返回default值。
还有一点就是,它也不支持条件查询等等,所以尽管SharedPreferences操作起来非常方便,但它也只能作为存储方式的一种补充,而无法完全替代SQLite数据库等其他数据存储方式。
二、Editor简介
SharedPreferences本身没有提供写入数据的方法,而是通过SharedPreferences的对象调用edit()方法获取Editor对象来写入数据。Editor的常用方法如下:
· clear() :清空SharedPreferences里所有数据。
· putXxx(String key, xxx value) :向SharedPreferences中写入数据。
· remove(String key) :删除SharedPreferences中指定key的值。
· commit() :当Editor编辑完,该方法提交修改。
三. 案例
我们写一个测试程序
功能1:将文本框中的数据通过SharedPreference保存起来
功能2:在下次打开的时候,我们再读取出来,回显到文本框中
界面如下:
功能代码:
//判断是否勾选了checkbook 如果勾选了 就将qq号和密码保存起来
boolean isChecked = cbx.isChecked();
if(isChecked){
//说明勾选了
//勾选之后 要将保存数据起来
try {
// 使用sharedPreference保存数据
//config文件将会生成在应用的文件夹下 --- 一个xml格式的文件中
//config ---文件名 Context.MODE_PRIVATE---模式0(私有)可以用“0”代替
sp = getSharedPreferences("config", Context.MODE_PRIVATE);
//通过edit()开启事务
SharedPreferences.Editor editor = sp.edit();
editor.putString("number",number);
editor.putString("password",password);
//提交事务 保存数据
editor.commit();
Toast.makeText(this,"勾选了,保存成功!", Toast.LENGTH_SHORT).show();
}catch(Exception e){
e.printStackTrace();
Toast.makeText(this,"勾选了,没 保存成功!", Toast.LENGTH_SHORT).show();
}
}else {
//说明没有勾选
Toast.makeText(this,"没勾选", Toast.LENGTH_SHORT).show();
}
测试运行:
在输入框中输入number:123 password:112 并勾选复选框,点击登录
可以看到在/data/data/{packagename}/shared_prefs目录下生成了一个名称为config.xml的文件(这个名称是在程序中设定的)
文档内容如下: