今天我们再来看一下SharedPreferences存储,不同于文件的存储方式,SharedPreferences存储是使用键值对的方式来存储数据的。而且SharedPreferences还支持多种不同的数据类型存储,如果存储的数据类型是整型,则读取出来的数据也是整型的;如果存储的数据时一个字符串,那么读取出来的数据仍然是字符串。
使用SharedPreferences来进行数据持久化要比使用文件方便很多。
将数据存储到SharedPreferences中
步骤:
1.获得使用
SharedPreferences
对象
注:接收两个参数,第一个参数用于指定SharedPreferences文件的名称,第二个参数用于指定操作模式。目前只有MODE_PRIVATE这一种模式可选,它是默认的操作模式,其他几种操作模式均已被废弃。
2.获得Editor对象
3.通过Editor对象的putXXX函数,设置写入数据
4.通过Editor对象的commit()提交写入
@Override
public void onClick(View arg0) {
String name = editTextuser.getText().toString();
String psw = editTextpsw.getText().toString();
// 获取SharedPreferences对象
SharedPreferences spf = getSharedPreferences("user_data",
Context.MODE_PRIVATE);
// 获取Editor对象
Editor editor = spf.edit();
// 写入数据
editor.putString("username", name);
editor.putString("psw", psw);
// 判断是否选择复选框
if (check.isChecked()) {
editor.putBoolean("check_state", true);
} else {
editor.putBoolean("check_state", false);
}
// 提交
editor.commit();
}
从SharedPreferences中读取数据
SharedPreferences对象中提供了一系列的get方法,用于对存储的数据进行读取,每种get方法都对应了SharedPreferences.Editor中的一种put方法,比如读取布尔型数据就使用getBoolean()方法。这些get方法都接受两个参数,第一个参数是键,传入存储数据时使用的键就可以得到相应的值了;第二个参数是默认值,即表示当传入的键找不到对应的值时会以什么样的默认值进行返回。
@Override
protected void onResume() {
super.onResume();
// 获取SharedPreferences对象
SharedPreferences spf = getSharedPreferences("user_data",
Context.MODE_PRIVATE);
// 取值
String name = spf.getString("username", "");
String password = spf.getString("psw", "");
boolean ckState = spf.getBoolean("check_state", false);
if (ckState) {
editTextuser.setText(name);
editTextpsw.setText(password);
check.setChecked(true);
}
}
注:Android主要提供了3种方法用于得到SharedPreferences对象。
1.Context类中的getSharedPreferences()方法。
这个方法接收两个参数,第一个参数用于指定SharedPreferences文件的名称,第二个参数用于指定操作模式。目前只有MODE_PRIVATE这一种模式可选,它是默认的操作模式,其他几种操作模式均已被废弃。
2.Activity类中的getPreferences()方法。
这个方法和
Context类中的getSharedPreferences()方法很相似,不过它只接收一个 操作模式参数,因为使用这个方法时会自动将当前活动的类名作为Sharedpreferences的文件名
3.PreferenceManager类中getDefaultSharedPreferences()方法。
这是一个静态方法,它接收一个Context参数,并自动使用当前应用程序的包名作为前缀来命名SharedPreferences文件。