跳到主要内容

存储方案知识体系概览

问题

Android 有哪些数据持久化方案?如何选型?

答案

Android 提供多种存储方案,按数据类型和使用场景选择:

方案对比

方案数据类型线程安全性能适用场景
SharedPreferences键值对一般简单配置(已不推荐)
DataStore键值对/Proto替代 SP,官方推荐
MMKV键值对极好高频读写、跨进程
Room结构化关系数据、复杂查询
文件存储任意取决于 IO大文件、媒体、日志

选型建议

  • 简单配置(主题、Token)→ DataStore Preferences
  • 复杂配置(类型安全)→ DataStore Proto
  • 高频读写 / 跨进程(统计、AB 参数)→ MMKV
  • 结构化数据 / 列表(用户、文章)→ Room
  • 大文件(图片、视频、日志)→ 文件存储
迁移建议

Google 官方建议从 SharedPreferences 迁移到 DataStore。Room 是 SQLite 的官方抽象层,优先使用 Room 而非直接操作 SQLite。


知识图谱

本分类涵盖以下核心知识点:

主题核心内容
SharedPreferencesSP 原理、ANR 问题、apply vs commit
DataStorePreferences/Proto DataStore、Flow API
SQLiteSQLite 基础、SQL 操作、数据库升级
RoomDAO/Entity/Database、关系查询、迁移
文件存储内部/外部存储、Scoped Storage、SAF
MMKVmmap 原理、Protobuf 编码、跨进程

相关链接