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();