Android-数据持久化之SharedPreference


数据持久化是指将内存中瞬时数据保存到存储设备当中,保证即使在设备关机的情况下,这些数据也不会丢失。Android系统提供三种数据持久化技术,即①文件存储、②SharedPreferences和③数据库存储。本篇记录第二种方式SharedPreferences存储。

shared preferences本质上就是文件系统中的文件,可使用 SharedPreferences 类读写它。SharedPreferences 实例用起来更像一个键值对仓库,键值对中的键为字符串,而值是原子数据类型。进一步查看shared preferences文件可知,它们实际上是一种简单的XML文件,但 SharedPreferences 类已屏蔽了读写文件的实现细节。shared preferences文件保存在应用沙盒中,所以,不应用它保存类似密码这样的敏感信息。

获取SharedPreferences 对象

  • Context类中的getSharedPreferences()方法(常用)
  • Activity类中的getPreferences()方法
  • PreferenceManager类中的getDefaultSharedPreferences()方法

此处仅记录我在代码中使用的Context类的方法,代码如下

/**
* MODE_PRIVATE:只限于本应用读写
* MODE_WORLD_READABLE:支持其他应用读,但是不能写
* MODE_WORLD_WRITEABLE:其他应用可以写
*/
SharedPreferences sharedPref = getSharedPreferences("filename", Context.MODE_PRIVATE);

SharedPreferences 读写操作

写入putXXX

写入操作需要SharedPreferences.Editor 的实例来辅助操作,然后通过commit() 方法提交。

SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putBoolean("keyb",true);
editor.putString("keys","string value");
editor.putInt("keyi","int value");
editor.putFloat("keyf","float value");
editor.putLong("keyl","long value");
editor.commit();

读取getXXX

SharedPreferences pref = getPreferences(Context.MODE_PRIVATE);
pref.getString("keys",null);
pref.getInt("keyi",0);
pref.getFloat("keyf",0);
pref.getBoolean("keyb",true);
pref.getLong("keyl",0);

注:getBoolean(String key, boolean defValue);getBoolean()参数:key查找,defValue:存在值就返回该值否则返回defValue,也就是说如果第一次使用getBoolean()通过key找不到,直接将其值初始化为defValue并返回。

删除remove

SharedPreferences pref = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.remove("key");
editor.commit();