什么是SharedPreferences

SharedPreferences是Android中一种轻型数据存储方式,本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息,SharedPreferences对象本身只能获取数据而不支持存储和修改,存储和修改是通过Editor对象实现的,保存位置为/data/data/[package_name]/shared_prefs/下。

实现SharedPreferences存储的步骤

  • 获得SharedPreferences对象

SharedPreferences是一个接口,不能直接实例化,只能使用Context对象提供的方法获取,在Activity中直接使用是因为Activity继承自Context

  • 获得SharedPreferences.Editor对象

SharedPreferences.Editor editor = pref.edit();

  • 存储数据

通过Editor接口的putXxx保存key-value对 Xxx为不同数据类型

editor.putString(“name”,”this is a name”);

//类似于数据库,必须提交存储操作才会生效

editor.commit();

//也可以使用如下方法

editor.apply();

关于SharedPreference.Editor的apply()和commit()方法异同

apply方法是将share的修改提交到内存而后异步写入磁盘,commit是直接写入磁盘,这就造成两者性能上的差异,apply方法会覆写之前内存中的值,异步写入磁盘的值只是最后的值,而commit每次都要写入磁盘,而磁盘的写入相对来说是很低效的,所以apply方法在频繁调用时要比commit效率高很多。apply虽然高效但是commit也有着自己的优势那就是它可以返回每次操作的成功与否的返回值。

  • 获取数据

通过SharedPreferences接口的geXxx获取key-value对 Xxx为不同数据类型

//第一个参数为key,第二个参数为默认值

String str = pref.getString(“name”,””);

通过这种方式存储xml文件的位置在data/data/包名/shared_prefs文件夹下

  • 实现SharedPreferences修改监听

有时候我们想当SharedPreferences中存储的数据发生变化的时候马上进行处理,这时我们可以使用SharedPreferences的registerOnSharedPreferenceChangeListener方法为其注册一个监听,当不需要继续使用的时候,需要使用SharedPreferences的unregisterOnSharedPreferenceChangeListener方法解除注册。如下

 

有关SharedPreferences的工具类

最后修改日期: 2017年10月13日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。