Android中SharedPreferences的介绍
安卓提供了多种存储技术,上次介绍了安卓中SQLite的存储方式,这次来说说安卓中的另一种存储方式SharedPreferences的使用。
SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置。比如Activity状态,Activity暂停时,将此activity的状态保存到SharedPereferences中;当Activity重载,系统回调方法onSaveInstanceState时,再从SharedPreferences中将值取出。它在存储的时候是按键值对的方式 (key-value) 把简单数据类型(boolean、int、float、long和string)存储在应用程序的私有目录下(data/data/包名 /shared_prefs/)自己定义的xml文件中。
操作模式
SharedPreferences数据有四种操作模式,分别是:
Context.MODE_PRIVATE
为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容Context.MODE_APPEND
模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.Context.MODE_WORLD_READABLE
表示当前文件可以被其他应用读取.Context.MODE_WORLD_WRITEABLE
表示当前文件可以被其他应用写入.
具体用法步骤
一,获取SharedPreferences方法
1,通过方法Context.getSharedPreferences(java.lang.String, int mode),其中name为本组件的配置文件名(如果想要与本应用程序的其他组件共享此配置文件,可以用这个名字来检索到这个配置文件),mode为操作模式,默认的模式为0或MODE_PRIVATE;返回值为SharedPreferences
2,通过函数Activity.getPreferences(int mode),其中配置文件仅可以被调用的activity使用。mode为操作模式,默认的模式为0或MODE_PRIVATE;返回值为SharedPreferences。
二,使用SharedPreferences存储数据
保存key-value对一般要指定一个文件名,然后用类似putstring的方法指定key和value。sharedpreferences也采用了同样的方法。使用sharedpreferences保存key-value对的步骤如下:
1,使用activity类的getSharedPreferences方法获得SharedPreferences对象。其中存储key-value的文件名的名称由getSharedPreferences方法的第一个参数指定。
2,使用SharedPreferences接口的Edit获得SharedPreferences.Editor对象。
3,通过SharedPreferences.Editor接口的putXxx方法保存key-value对。其中xxx表示value的不同数据类型。boolean类型的value则是用putBoolean方法,字符串类型的则为putString方法。
4, 通过SharedPreferences.Editor接口的commit方法保存key-value对。commit方法相当于数据库事务中的提交(commit)操作。只有在事件结束后进行提交,才会将数据真正保存在数据库中。保存key-value也是一样。
代码
- 上面说了这么多,接下来就用代码来演示一下数据的存取
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedPreferences pref = getSharedPreferences("myPref", MODE_PRIVATE);//私有数据模式(默认模式)
Editor editor = pref.edit();
editor.putString("name", "张三");
editor.putInt("age", 30);
editor.putLong("time", System.currentTimeMillis());
editor.putBoolean("default", true);
editor.commit();// 每次操作都要提交
Log.i("Test", pref.getString("name", ""));//读取数据测试
}
}
以上代码运行之后,在本地会生成一个名为myPref.xml的文件
打开这个文件,就可以看到刚刚保存的数据
读取数据
- 读取数据非常简单,刚刚在代码里也有演示,在获得SharedPreferences对象之后直接用getXxx方法获取数据。
方法名 | 方法作用 |
---|---|
getAll() | 获取所有值 |
getBoolean(String key, boolean defValue) | 获取Boolean类型的值 |
getFloat(String key, float defValue) | 获取Float类型的值 |
getInt(String key, int defValue) | 获取Int类型的值 |
getLong(String key, long defValue) | 获取Long类型的值 |
getString(String key, String defValue) | 获取String类型的值 |
总结
- SharedPreferences作为安卓平台上一个轻量级的存储类,使用起来比较容易,而且它在安卓学习开发过程中是经常用到的。本人作为安卓初学者,对SharedPreferences的研究不是很深,以上总有些忽略的地方,欢迎指正!