title: SharedPreferences学习
tags: android,存储,SharedPreferences
grammar_cjkRuby: true
简介
日常开发中我们常常要用到保存数据,Android中常用的存储方式有SQLite,sharedPreferences 等,当然也有各自的应用场景,前者适用于保存较多数据的情形,后者责倾向于保存用户偏好设置比如某个checkbox的选择状态,用户登录的状态、配置信息,实现记住密码功能等等,都是以键值对的形式进行的文件读取。
SharedPreferences:一个轻量级的存储类,特别适合用于保存软件配置参数。(是用xml文件存放数据,文件存放在/data/data//shared_prefs目录下)。
SharedPreferences只能保存简单类型的数据,例如四种基本类型(int,float,long,boolean)+String。如果需要存取比较复杂的数据类型比如类或者图像,则需要对这些数据进行编码,通常将其转换成Base64编码,然后将转换后的数据以字符串的形式保存在XML文件中。
使用方式
//获取sharedPreferences对象中editor对象
SharedPreferences.Editor editor = getSharedPreferences("loginInfo",MODE_PRIVATE).edit();
//存储键值对
editor.putString("name", "周杰伦");
editor.putInt("age", 24);
editor.putBoolean("isMarried", false);
editor.putLong("height", 175L);
editor.putFloat("weight", 60f);
editor.putStringSet("where", set);
// editor.clear(); //清空操作
//提交
editor.commit();
// 读取信息
SharedPreferences sharedPreferences = getSharedPreferences("zjl", Context.MODE_PRIVATE);
//getString()第二个参数为缺省值,如果preference中不存在该key,将返回缺省值
String name = sharedPreferences.getString("name", "");
int age = sharedPreferences.getInt("age", 1);
使用解析
保存数据
- 使用Activity类的getSharedPreferences方法获得SharedPreferences对象;
- 使用SharedPreferences接口的edit获得SharedPreferences.Editor对象;
- 通过SharedPreferences.Editor接口的putXXX方法保存key-value对;
- 通过过SharedPreferences.Editor接口的commit方法保存key-value对。
读取数据
- 使用Activity类的getSharedPreferences方法获得SharedPreferences对象;
- 通过SharedPreferences对象的getXXX方法获取数据;
获取SharedPreferences对象
public abstract SharedPreferences getSharedPreferences (String name, int mode)
- 根据name查找SharedPreferences,若已经存在则获取,若不存在则创建一个新的
- 参数
name:命名
mode:模式,包括
MODE_PRIVATE(只能被自己的应用程序访问)
MODE_WORLD_READABLE(除了自己访问外还可以被其它应该程序读取)
MODE_WORLD_WRITEABLE(除了自己访问外还可以被其它应该程序读取和写入)
备注:后两种已废除
SharedPreferences sharedPreferences = getSharedPreferences("name", Context.MODE_PRIVATE);
参考
【Android】数据存储(一) SharedPreferences详解】
【Android-存储:SharedPreferences使用及其存储类型】