在安卓应用程序中,存储某些必要的用户信息和应用程序配置信息是非常必要的。Shared Preferences(SP) 是一种轻量级的数据存储方式,一般用来存储与用户相关的数据。SP 具体来说就是一个轻量级的 key-value 键值对储存方式,存储的数据是以 XML 文件的形式存储在应用的/data/data/
## SP 存储原理
SP 存储原理非常简单,是通过 Android 系统 SharedPreferences 接口所提供的存储机制实现的。SharedPreferences 接口提供了一种key-value存储方式,可以将用户数据存储在 SharedPreferences 的文件中。在应用程序中,我们打开SharedPreferences,然后将所需信息以 key-value 的形式存储起来即可,在下一次启动应用时,我们可以从SharedPreferences 中获取之前存储的数据,以便我们使用。
## SP 存储的使用
### 获取 SharedPreferences 实例
在安卓应用程序中访问 SharedPreferences 十分简单。我们调用 `getSharedPreferences()`方法即可获取一个实例。方法声明如下:
```java
public SharedPreferences getSharedPreferences(String name, int mode)
```
其中,name 是文件名,在应用程序中,每个文件必须使用唯一的名称,我们建议使用应用程序的包名(例如,com.example.app1.preferences)。MODE_PRIVATE 表示只有应用程序本身能够访问该文件。
```java
SharedPreferences sharedPreferences = getSharedPreferences("com.example.app1.preferences", MODE_PRIVATE);
```
### 存储数据
我们可以将数据作为 key-value 对存储在 SharedPreferences 中,以便我们下次使用。
```java
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("username", "John Doe");
editor.putInt("age", 30);
editor.putBoolean("isMarried", true);
editor.apply();
```
### 获取数据
获取 SharedPreferences 中的数据也非常简单:
```java
String username = sharedPreferences.getString("username", "");
int age = sharedPreferences.getInt("age", 0);
boolean isMarried = sharedPreferences.getBoolean("isMarried", false);
```
在使用 `getString()`方法获取数据时,我们可以设置默认值。如果 SharedPreferences 文件中不存在该数据,则使用该默认值。
### 删除数据
SharedPreferences 中的数据也可以非常简单地删除。
```java
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.remove("username");
editor.apply();
```
删除数据是通过 `remove()`方法实现的。
### 清除数据
有时,我们需要清除 SharedPreferences 文件中的所有数据。
```java
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.clear();
editor.apply();
```
清除数据是通过 `clear()`方法实现的。
## SP 常用场景
### 应用程序配置
在应用程序中,有许多应用程序配置需要存储,例如:用户设置,搜索条件等等。如果使用数据库来存储这些数据,会大幅增加开发难度,并且浪费宝贵的存储空间。使用SharedPreferences则非常方便。只需要简单地将数据存储在SharedPreferences文件中,就可以很容易地获取并使用它们。
### 应用程序首选项
SharedPreferences 经常被用作保存应用程序的上一次使用时间、应用启动次数、语言设置等。
### 用户信息
SharedPreferences 也可以被用于存储用户信息,例如用户的姓名、电话号码、电子邮件地址等。由于SharedPreferences提供了简单的读取和写入操作,因此使用SharedPreferences存储用户信息是非常适合的。
### 其他
SharedPreferences 还可以用于存储轻量级的小型数据,例如用户的位置信息、天气信息等等。
## 小结
SharedPreferences提供了一种轻量级、快速并且易于使用的存储方式来保存应用程序的配置文件、用户数据以及其他小数据。SharedPreferences 文件储存在 /data/data/