今天在开发应用的时候遇到个问题:如何保存应用的进度,或者说如何关闭前一个Activity后保持其原来的状态。这时候需要用的是SharedPreferences,轻量级的数据存储方式。
SharedPreferences本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。实现SharedPreferences存储的步骤如下:
一、根据Context获取SharedPreferences对象
二、利用edit()方法获取Editor对象。
三、通过Editor对象存储key-value键值对数据。
四、通过commit()方法提交数据。
首先先写俩工具类:
/**
* 对SharedPreferences初始化
* 写入默认值
*/
private void init(){
// 初始化SharedPreferences
sp = getSharedPreferences("CameraDemo", MODE_WORLD_READABLE+MODE_WORLD_WRITEABLE);
spe = sp.edit();
// 写入默认选项
spe.putString("KeyCode", items[0]);
spe.putInt("LastCode", Last_code);
// 提交
spe.commit();
}
/**
* 写入传来的字符串
* @param path 传入的字符串
*/
private void writePreferencess(String path,int code){
SharedPreferences sps = getSharedPreferences("CameraDemo", MODE_PRIVATE);
spe = sps.edit();
// 写入默认选项
spe.putString("KeyCode", path);
spe.putInt("LastCode", code);
// 提交
spe.commit();
}
/**
* 读取相应的String数据
* @return 存储的条目
*/
private String readPreferencesString(){
SharedPreferences sps = getSharedPreferences("CameraDemo", MODE_PRIVATE);
String itemString = sps.getString("KeyCode", items[0]);
return itemString;
}
/**
* 读取相应的int数据
* @return 存储的条目
*/
private int readPreferencesInt(){
SharedPreferences sps = getSharedPreferences("CameraDemo", MODE_PRIVATE);
int itemInt = sps.getInt("LastCode", 0);
return itemInt;
}
这里我创建的SharedPreferences包括两个变量,一个是String类型,另一个是int类型,分别代表选项的名称和标识数字,
接下来在onCreate中:
File f = new File("/data/data/com.example.camerademo/shared_prefs/CameraDemo.xml");
// 判断文件是否存在
if(!f.exists()){
Log.d(TAG, "正在创建SharedPreferences。。。。");
init();
text_view.setText("当前默认状态为:\n" +keyString
+ "\n 若需要改变状态,请点击设置!");
} else {
Log.d(TAG, "获取相应的内容:keyString+Last_code");
keyString = readPreferencesString();
Last_code = readPreferencesInt();
Log.d(TAG, keyString+"");
Log.d(TAG, Last_code+"");
text_view.setText("当前默认状态为:\n" +keyString
+ "\n 若需要改变状态,请点击设置!");
}
在选项的方法中,调用写入的方法:
writePreferencess(keyString,isSelected);得到自己需要的状态。
好了,就这么多。下面附上参考链接:
http://blog.csdn.net/jiahui524/article/details/6971662
http://blog.csdn.net/cycwind/article/details/6906611
http://blog.sina.com.cn/s/blog_4f1c99de0101hur1.html