在Android应用开发中,需要经常保存一些用户对于自己软件的设置,所以,Android平台给我们提供了一个SharedPreferences类,它是一个轻量级应用程序内部轻量级的存储方案,特别适合用于保存软件配置参数
SharedPreferences:
1、是一种轻型的数据存储方式
2、本质是基于XML文件存储key-value键值对数据
3、Android中常用来存储一些简单的配置文件
其实,SharedPreferences对象本身只能获取数据而不支持存储和修改,存储和修改是通过Editor对象实现的。
具体的实现步骤:
实现SharedPreferences存储步骤:
(1)获取SharedPreferences对象
获取SharedPreferences对象的两种方法:
1、使用Activity的getSharedPreferences()//这个方法也是比较常用的
2、使用PreferenceManager中的getDefaultSharedPreferences()方法,不能自己定义XML文件名和文件权限。
(2)获取SharedPreferences.Editor对象(因为SharedPreferencesd对象不能直接进行存储,存储实现通过Editor对象实现)
(3)通过Editor接口的putXxxx方法保存
(4)通过Editor.commit提交//这个一定要记得,不然数据保存提交不上
这里我做了个简单的demo,就是两个Button一个存入数据,一个显示数据。
效果图:
源码如下:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initEvent();
}
/**
* 初始化控件
*/
private void initView() {
logdata = (Button) findViewById(R.id.log_data);
readdata = (Button) findViewById(R.id.read_data);
}
/**
* 建立点击事件
*/
private void initEvent() {
logdata.setOnClickListener(this);
readdata.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.log_data:
putData();
break;
case R.id.read_data:
getData();
break;
}
}
/**
* 显示存入的记录
*/
private void getData() {
Toast.makeText(
this,
"名字是" + preferences.getString("name", "") + ",年龄是"
+ preferences.getInt("age", 0), Toast.LENGTH_SHORT)
.show();
}
/**
* 通过按键存入数据
*/
private void putData() {
/*
* SharedPreferences是一个接口,程序是无法创建SharedPreferences实例的,可以通过Context.
* getSharedPreferences(String name,int mode)来得到一个SharedPreferences实例
* name:是指文件名称,不需要加后缀.xml,系统会自动为我们添加上。一般这个文件存储在/data/data/<package
* name>/shared_prefs下(这个面试常问到) mode:是指定读写方式,其值有三种,分别为:
* Context.MODE_PRIVATE:指定该SharedPreferences数据只能被本应用程序读、写
* Context.MODE_WORLD_READABLE:指定该SharedPreferences数据能被其他应用程序读,但不能写
* Context.MODE_WORLD_WRITEABLE:指定该SharedPreferences数据能被其他应用程序读写。
*/
preferences = getSharedPreferences("mydata", MODE_PRIVATE);
Editor editor = preferences.edit();
editor.putString("name", "王五");
editor.putInt("age", 20);
// commit()提交
editor.commit();
Toast.makeText(this, "存入数据成功", Toast.LENGTH_SHORT).show();
}
希望对初学者有帮助~~