上一篇
安卓开发保存数据结构
- 行业动态
- 2025-04-23
- 3
安卓开发常用SP存配置,SQLite管结构化,文件存本地,DB处理复杂,网络同步
安卓数据存储方式详解
SharedPreferences(共享偏好)
- 特点:基于键值对的轻量级存储,本质是XML文件。
- 适用场景:保存简单配置项(如用户设置、登录状态)。
- 操作:
// 写入数据 SharedPreferences sp = getSharedPreferences("config", MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); editor.putString("username", "张三"); editor.apply(); // 异步提交
文件存储
- 特点:直接操作文件系统,支持文本/二进制数据。
- 适用场景:存储日志、配置文件、缓存数据。
- 操作:
// 写入文本文件 try (FileOutputStream fos = openFileOutput("data.txt", MODE_PRIVATE)) { fos.write("Hello World".getBytes()); }
SQLite数据库
- 特点:关系型数据库,支持SQL语句操作。
- 适用场景:复杂数据结构存储(如用户信息表、订单表)。
- 操作:
// 创建表 SQLiteDatabase db = SQLiteOpenHelper.getWritableDatabase(); db.execSQL("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)");
Room组件
- 特点:SQLite的封装库,提供编译时校验。
- 优势:减少SQLite操作冗余代码,支持LiveData观察。
- 操作:
// 定义实体 @Entity public class User { @PrimaryKey(autoGenerate = true) public int id; public String name; }
ContentProvider
- 特点:跨应用数据共享接口。
- 适用场景:对外提供数据访问(如通讯录数据)。
- 注意:通常结合SQLite使用,需实现增删改查接口。
数据存储方式对比表
特性 | SharedPreferences | 文件存储 | SQLite | Room |
---|---|---|---|---|
数据类型 | 键值对 | 文本/二进制 | 关系型数据 | 关系型数据 |
持久性 | 是 | 是 | 是 | 是 |
操作复杂度 | 低 | 中 | 高 | 中(简化版) |
适用场景 | 简单配置 | 文件缓存 | 复杂业务 | 复杂业务+UI联动 |
问题与解答
Q1:如何选择SharedPreferences和SQLite?
A1:若数据是简单键值对(如开关状态、用户名),优先用SharedPreferences;若涉及多表关联、复杂查询(如订单管理),必须使用SQLite或Room。
Q2:Room相比直接操作SQLite有什么优势?
A2:Room提供编译时语法检查,避免运行时SQL错误;内置LiveData支持数据变化监听;通过注解自动生成DAO实现类,减少模板代码