Android 数据持久化(SharedPreferences)
一、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 实例
SharedPreferences sp = getSharedPreferences("name", mode);name:文件名。mode:MODE_PRIVATE:仅当前应用可访问(默认)。MODE_APPEND:通常不用于 SharedPreferences。
2. 写入数据
需通过
SharedPreferences.Editor对象操作:SharedPreferences.Editor editor = sp.edit(); editor.putString("name", "张三"); editor.putInt("age", 20); editor.apply(); // 或 editor.commit();commit():立即写入(同步)。apply():后台写入(异步)。
3. 读取数据
String name = sp.getString("name", "默认值");
int age = sp.getInt("age", 0);
boolean remember = sp.getBoolean("remember", false);四、代码示例
// 获取实例
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);