SharedPreferences:
特征:
是通过将键值数据对存储在xml文件中的一种轻型数据存储方案;可存储String,Int,boolean,long,float五中数据类型;
对SharedPrefences的操作是通过Editer实例和SharedPrefences对象的;
其存储位置在/data/data/<包名>/shared_prefs目录下
一般存储一些配置信息
常用方法:
1:创建SharedPreferences实例:
1:通过Context的getSharedPreferences()创建对象;
//需要指定文件,如果指定的文件不存在则会自动创建该文件;
//可以被同一个应用下的组件共享!
SharedPrefences sp = getSharedPreferences(String name,model);
2:通过Activity的getPreferences()创建对象;
//只需要指定访问模式,该方法会自动将当前Activity的名称作为文件的名称;
//只能在当前activity中使用!
SharedPrefences sp = this.getPreferences(model);
2:对数据的存储和删除:
Editor edi = sp.edit();
edi.putString("name_key",value);
edi.clear();
edi.remove("name_key");
3:对数据的获取:
Map(string,value) all_value = sp.getALL():获取所有的数据
sp.getString("name_key");
boolean value = sp.contains("key_name");
4:完整操作:
1:存储数据
Context context =Activity.this();
SharedPreferences sp = getSharedPreferences("myxml",Context.MODE_PRIVATE);
Editor editer = sp.edit();
edit.putString("name_key",value);
edit.putInt("name_key",value);
edit.putBoolean("name_key",value);
edit.commit();//提交存储
2:清除数据
SharedPreferences sp = context.getSharedPreferences("myxml", Context.MODE_PRIVATE);
Editor editor = sharedPreferences.edit();
editor.remove("username");
editor.remove("password");
editor.commit();// 提交修改
3:获取数据:
SharedPreferences sp = context.getSharedPreferences("myxml", Context.MODE_PRIVATE);
String username = sp.getString("username", "");
int password = sp.getInt("password", 0);
创建SharedPreferences对象时的模式:
Context.MODE_PRIVATE; //为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容
Context.MODE_MULTI_PROCESS; //模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
Context.MODE_WORLD_READABLE;
Context.MODE_WORLD_WRITEABLE://用来控制其他应用是否有权限读写该文件.
实例:
创建SharedPrefences和editer实例
创建一个SharedPreferences实例:
private void createTable(){
sp = getPreferences(Context.MODE_PRIVATE);
editor = sp.edit();
Log.i("data", "SharedPredferences obj create success");
}
执行结果如下:
存储一条数据:
private void insert(){
editor.putString("name","lili");
editor.putInt("age",22);
editor.commit();
Log.i("data", "insert success");
}
执行结果如下:
查询一条数据:
现在查询刚才插入的数据
private void query() {
//获取某个数据使用getXxx();Xxx是八个基本数据类型
String name = sp.getString("name","");
int age = sp.getInt("age",0);
Log.i("data", "name is :"+name+"age is :"+age);
}
结果如下:
获取所有数据:
private void getAllData(){
//获取所有数据返回的是个map;
Map<String,?> map = sp.getAll();
Log.i("data", "name is :"+map.get("name")+"----age is :"+map.get("age"));
}
清除一条数据:
public void removeOneData(String key){
edit.remove(key,value);
edit.commit();
}
看下结果:
我们先删除一条数据,然后再查询所有的数据:
可以看到提示删除成功,并且打印所有数据发现,name这条数据已经不存在了;