当前位置:首页 > 行业动态 > 正文

安卓如何存储什么

安卓通过内部存储(私有数据)、外部 存储(SD卡/USB)、SQLite 数据库、SharedPreferences(键值对)及网络存储(云服务)等方式,存储应用数据、媒体文件、用户配置、缓存信息等

安卓存储机制详解

安卓存储类型分类

存储类型 特点 典型用途
内部存储 应用私有空间,无需申请权限,数据随应用卸载自动删除 配置文件、缓存文件、敏感数据
外部存储 公共空间(需申请权限),数据可能被用户或其他应用访问 媒体文件、日志、大文件存储
SQLite数据库 轻量级关系型数据库,支持SQL语句操作 结构化数据持久化存储
SharedPreferences 基于XML的键值对存储,本质是简化版数据库 轻量级配置信息
文件存储 直接读写文件系统,支持多种格式(txt/json/binary等) 文本记录、二进制文件、资源文件
缓存机制 临时存储(如内存缓存、磁盘缓存),系统可自动清理 频繁访问的临时数据

具体存储方式实现

  1. 内部存储操作
    // 写入文本文件
    val file = File(context.filesDir, "config.txt")
    file.writeText("key=value")

// 读取文件
val content = file.readText()

2. 外部存储操作(Android 10+)
```kotlin
// 写入公共下载目录
val file = File(context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), "log.txt")
file.writeText("App Log")
// 读取需处理Scoped Storage限制
  1. SQLite数据库操作
    // 创建数据库
    val db = SQLiteOpenHelper(context, "app.db", null).writableDatabase

// 增删改查
db.execSQL(“CREATE TABLE user(id INTEGER PRIMARY KEY)”)
db.insert(“user”, null, mapOf(“id” to 1))

安卓如何存储什么  第1张

4. SharedPreferences使用
```kotlin
// 写入配置
getSharedPreferences("settings", MODE_PRIVATE).edit().putString("theme", "dark").apply()
// 读取配置
val theme = getSharedPreferences("settings", MODE_PRIVATE).getString("theme", "light")

存储方式对比表

特性 SharedPreferences SQLite 文件存储 内部存储 外部存储
数据格式 键值对(String/int等) 关系型表结构 自由格式 同文件存储 同文件存储
操作复杂度
适用场景 轻量级配置 复杂业务数据 非结构化数据 所有类型 大文件/媒体
数据安全 中等(可备份) 高(可加密) 低(易被读取) 高(私有) 低(公共)
存储容量 无限制(受设备限制) 无限制 无限制 受限于设备内存 受限于存储卡空间

关键注意事项

  1. 权限管理

    • 外部存储需动态申请MANAGE_EXTERNAL_STORAGE(Android 11+)或WRITE_EXTERNAL_STORAGE(旧版本)
    • 访问其他应用文件需READ_EXTERNAL_STORAGE
  2. 数据兼容性

    • 使用MMKV等第三方库实现跨进程/多端数据同步
    • SQLite数据库升级需处理版本迁移逻辑
  3. 性能优化

    • 频繁读写使用MemoryCache(如LruCache)
    • 大文件分块读写(避免主线程阻塞)

常见问题与解答(Q&A)

Q1:如何选择SharedPreferences和SQLite?
A:若数据为简单键值对(如用户设置、开关状态),优先使用SharedPreferences;若涉及多表关联、复杂查询(如订单管理、聊天记录),则选择SQLite。

Q2:如何在Android 10+上安全访问外部存储?
A:1)使用MediaStore API操作媒体文件;2)通过Storage Access Framework获取URI;3)将文件存储在app-specific directory(如getExternalFilesDir()返回路径

0