一、概述
1.键值对方式存储
SharedPreferences 是使用键值对的方式来存储数据的。也就是说,当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。
2.支持多种不同的数据类型存储
SharedPreferences
支持多种不同的数据类型存储,如果存储的数据类型是整形,那么读取出来的数据也是整形;如果存储的数据是一个字符串,那么读取出来的数据是字符串。
3. 应用场景
- 应用程序中的偏好设置功能
- 记住密码功能(需要加密存储)
二、将数据存储到 SharedPreferences 中
1. 获取 SharedPreferences 对象
要想使用 SharedPreferences
存储数据,首先需要获取 SharedPreferences
对象。Android 中主要提供了以下两种方法用于得到 SharedPreferences
对象。
1.1 Context 类中的 getSharedPreferences() 方法
public SharedPreferences getSharedPreferences(String name, int mode);
- 第一参数 用于指定
SharedPreferences
文件的名称,如果指定的文件不存在则会创建一个。 SharedPreferences
文件都是存放在/data/data/<package name>/shared_prefs
目录下- 第二个参数用于指定操作模式,目前只有默认的
MODE_PRIVATE
这一种模式可选。其他几种模式均已被废弃。
1.2 Activity 类中的 getPreferences() 方法
这个方法和Context 中的getSharedPreferences()
方法很类似,不过它只接收一个操作模式参数,因为使用这个方法时会自动将当前Activity 的类名作为 SharedPreferences
的文件名。
2. 示例代码
sharedPreferences = getSharedPreferences("data",Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("name","xiaoming");
editor.putInt("age",18);
editor.commit();
- 获取
sharedPreferences
; - 返回
sharedPreferences
的editor
对象; editor
对象 根据实际需要,输入实际的键值对;- 调用
editor
的commit
方法,保存数据。
三、从 sharedPreferences 读取数据
示例代码
sharedPreferences = getSharedPreferences("data",Context.MODE_PRIVATE);
String nameString = sharedPreferences.getString("name","");
int age = sharedPreferences.getInt("age",0);
- 获取
sharedPreferences
对象; - 根据 要获取的不同的类型值调用不同的api(字符串类型,整数类型) ,输入对应的键。
四、查看存放到系统的 sharedPreferences 文件
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map><string name="name">xiaoming</string><int name="age" value="18" />
</map>