一、Android 数据持久化概述
1. 为什么需要数据持久化?
-
手机内存是易失性的,应用关闭或设备重启会导致数据丢失。
-
持久化技术可将数据保存到内部存储、外部存储或数据库中,确保数据长期存在。
2. Android 数据存储方式
-
文件存储:适用于少量数据。
-
SharedPreferences:适用于键值对数据。
-
SQLite 数据库:适用于结构化数据。
-
ContentProvider:用于应用间数据共享。
-
网络存储:将数据存储到网络服务器。
二、SharedPreferences 详解
1. 基本概念
-
以 键值对(key-value) 形式存储数据。
-
支持的数据类型:
int、float、long、boolean、String、StringSet。 -
存储的数据类型与读取时一致。
2. 文件格式与存储位置
-
数据以 XML 文件 形式保存。
-
存储路径示例
data/data/包名/shared_prefs/文件名.xml -
应用被卸载时,该文件会被删除。
3. 适用场景
-
存储简单、孤立的数据。
-
存储文本形式的数据。
-
需要持久化的数据(应用重启后仍有效)。
三、SharedPreferences 的使用
1. 获取 SharedPreferences 实例
java
SharedPreferences sp = getSharedPreferences("name", mode);
-
name:文件名。 -
mode:-
MODE_PRIVATE:仅当前应用可访问(默认)。 -
MODE_APPEND:通常不用于 SharedPreferences。
-
2. 写入数据
-
需通过
SharedPreferences.Editor对象操作:javaSharedPreferences.Editor editor = sp.edit(); editor.putString("name", "张三"); editor.putInt("age", 20); editor.apply(); // 或 editor.commit(); -
commit():立即写入(同步)。 -
apply():后台写入(异步)。
3. 读取数据
java
String name = sp.getString("name", "默认值");
int age = sp.getInt("age", 0);
boolean remember = sp.getBoolean("remember", false);
四、代码示例
java
// 获取实例
SharedPreferences sp = getSharedPreferences("MyPreferences", MODE_PRIVATE);
// 写入数据
SharedPreferences.Editor editor = sp.edit();
editor.putString("key_name", "value");
editor.putInt("key_age", 30);
editor.apply();
// 读取数据
String name = sp.getString("key_name", "default");
int age = sp.getInt("key_age", 0);
// 输出
Log.d("Preferences", "Name: " + name + ", Age: " + age);