Android 系统常用的五种数据存储方式详解

① SharedPreferences(轻量级键值存储)

原理: 使用 XML 文件以键值对形式存储数据,调用 Context.getSharedPreferences()。

存储路径: data/data/<包名>/shared_prefs/

特点:

  • 轻量、简单,适合少量配置数据
  • 自动持久化为 XML 文件
  • 支持 String、int、boolean、float、long、Set<String> 等类型

应用场景:

  • 用户偏好设置(主题、语言、通知开关)
  • 登录状态、Token 缓存
  • 首次启动引导标识
  • 简单配置参数存储

    val sp = getSharedPreferences("config", MODE_PRIVATE)

    sp.edit().putBoolean("dark_mode", true).apply()

    val darkMode = sp.getBoolean("dark_mode", false)

② 文件存储

原理: 通过 Java I/O 流(FileInputStream / FileOutputStream)直接读写文件。

两种存储位置:

类型 路径 权限
内部存储 data/data/<包名>/files/ 仅本应用可访问
外部存储 storage/emulated/0/ 需运行时权限(6.0+)

特点:

  • 灵活,支持任意格式(文本、图片、音视频、JSON 等)
  • 适合大文件存储
  • 外部存储需处理运行时权限

应用场景:

  • 图片/视频缓存
  • 数据备份(CSV、JSON 导出)
  • 游戏资源存储
  • 日志文件写入

    // 写入

    openFileOutput("data.txt", MODE_PRIVATE).use {

    it.write("Hello".toByteArray())

    }

    // 读取

    openFileInput("data.txt").bufferedReader().readText()

③ SQLite 数据库

原理: Android 内置的轻量级关系型数据库,基于 SQLiteOpenHelper,使用 android.database.sqlite 包。

存储路径: data/data/<包名>/databases/

特点:

  • 完整关系型数据库,支持 SQL 语句
  • 支持索引、事务、触发器
  • 适合存储大量结构化数据
  • 底层由 C 语言编写,Android 原生集成

应用场景:

  • 通讯录、短信、通话记录
  • 电商订单、商品、购物车
  • 聊天消息记录
  • 任何需要复杂查询的 structured 数据

    class MyHelper(context: Context) : SQLiteOpenHelper(context, "demo.db", null, 1) {

    override fun onCreate(db: SQLiteDatabase) {

    db.execSQL("CREATE TABLE user (_id INTEGER PRIMARY KEY, name TEXT)")

    }

    override fun onUpgrade(db: SQLiteDatabase, old: Int, new: Int) {}

    }

④ ContentProvider(内容提供者)

原理: Android 四大组件之一,通过统一 URI 接口暴露数据,实现跨应用数据共享。

核心 URI: content://<authority>/<path>/<id>

特点:

  • 跨应用数据共享的核心方式
  • 提供标准 CRUD 接口(query/insert/update/delete)
  • 底层通常依赖 SQLite 或文件存储
  • 系统内置:联系人、短信、媒体库等

应用场景:

  • 读取系统联系人、相册、短信
  • App 间数据分享(如微信分享图片)
  • 提供自身数据给其他应用
  • 实现数据同步中间件

    // 读取联系人

    val cursor = contentResolver.query(

    ContactsContract.CommonDataKinds.Phone.CONTENT_URI,

    null, null, null, null

    )

⑤ 网络存储(云端存储)

原理: 通过网络将数据上传至云端服务器,本地仅缓存索引/元数据。

常见方式:

  • HTTP/HTTPS RESTful API
  • 云服务 SDK(阿里云 OSS、Firebase、LeanCloud)
  • WebDAV、云盘 API

特点:

  • 数据与设备解耦,支持多端同步
  • 支持海量存储空间
  • 需考虑网络安全(HTTPS、数据加密)
  • 通常需要用户认证

应用场景:

  • 云相册自动备份
  • 笔记/文档多设备同步(印象笔记、Notion)
  • 聊天记录云同步
  • App 业务数据上报
  • 实时协作类应用

📊 5种方式对比

存储方式 数据量 结构化 跨应用共享 典型场景
SharedPreferences 少量 键值对 设置项、登录态
文件存储 任意 任意格式 缓存、媒体、备份
SQLite 大量 关系型 ⚠️ 需配合ContentProvider 业务数据、聊天记录
ContentProvider 中大量 灵活 ✅ 核心方式 系统数据、跨App共享
网络存储 海量 任意 ✅ 多端同步 云备份、云笔记、数据上报

总结: Android 完整提供了从轻量键值(SharedPreferences)到重量级数据库(SQLite)、文件、网络、跨应用共享(ContentProvider)的全栈存储能力。

相关推荐
Anhty5 天前
2026 实测 4 款 AI 变声器|QQ 聊天伪装声线,告别僵硬假声
人工智能·功能测试·ios·智能手机·安卓
Anhty10 天前
手机端叮咚变声器2026实测:功能表现、优缺点完整解析
功能测试·ios·智能手机·安卓
iReachers10 天前
HTML打包APK实现拍照、录像、录音和文件选择教程
html·安卓·相机·apk打包·麦克风
朝阳58112 天前
RunBeat 跑步节拍器 · 技术实现拆解
安卓
LDyun_15 天前
云手机低延迟怎么实现的?为什么云手机能够 7×24 小时在线?
ios·智能手机·安卓·玩游戏
zzq779716 天前
APP 加固选型实战:从保护面构建到发布验收的全链路指南
安全·安卓·app加固·apk加固·御盾安全·御盾·免费加固
LDyun_19 天前
2026云手机选购指南:怎么选靠谱的云手机?
ios·智能手机·安卓·玩游戏
zzq779721 天前
Android 风险识别机制实测:从录屏悬浮窗到远程控制的边界评估
android·安全·安卓·app加固·御盾安全
网络研究院23 天前
安卓正在变成苹果,谷歌将限制第三方应用的安装
开源·安卓·谷歌·应用·安装·限制·平台