上一篇
安卓四种存储方式
- 行业动态
- 2025-04-23
- 3233
安卓四种存储方式:SharedPreferences存配置,文件存储存小文件,SQLite存结构化数据,网络存储同步
安卓四种存储方式详解
内部存储(Internal Storage)
- 定义:应用安装后默认分配的私有存储空间,数据仅对当前应用可见。
- 特点:
- 存储路径:
/data/data/<包名>/
- 无需申请权限,系统自动管理。
- 适合存储敏感配置、缓存文件等。
- 存储路径:
- 典型用途:
- 保存用户设置(如SharedPreferences)。
- 临时缓存文件(如图片、下载数据)。
- 应用私有数据库(SQLite)。
外部存储(External Storage)
- 定义:可被用户和其他应用访问的公共存储空间(如SD卡或手机内置虚拟存储)。
- 特点:
- 存储路径:
/storage/emulated/0/
(Android 10+沙盒化)。 - 需动态申请
READ_EXTERNAL_STORAGE
或WRITE_EXTERNAL_STORAGE
权限。 - Android 10+ 强制使用作用域存储(Scoped Storage),应用只能访问自身创建的文件或媒体文件。
- 存储路径:
- 典型用途:
- 用户生成的多媒体文件(照片、视频)。
- 大型下载文件(如APK、文档)。
SQLite数据库
- 定义:轻量级嵌入式数据库,支持结构化数据存储。
- 特点:
- 每个应用可创建独立数据库文件,存储在
/data/data/<包名>/databases/
。 - 通过
SQLiteOpenHelper
管理数据库版本和创建。 - 支持SQL语句操作,适合复杂查询。
- 每个应用可创建独立数据库文件,存储在
- 典型用途:
- 本地用户数据(如通讯录、订单记录)。
- 需要事务支持的数据场景。
网络存储(Cloud Storage)
- 定义:将数据上传至远程服务器或云服务(如HTTP、WebSocket)。
- 特点:
- 依赖网络,需配置
INTERNET
权限。 - 数据可跨设备共享,适合备份和同步。
- 需处理网络状态、数据加密和API调用。
- 依赖网络,需配置
- 典型用途:
- 用户登录信息同步至服务器。
- 文件上传至云盘(如Google Drive、Dropbox)。
- 实时数据同步(如聊天消息)。
存储方式对比表
存储方式 | 存储位置 | 数据类型 | 访问权限 | 是否需要权限 | 适用场景 |
---|---|---|---|---|---|
内部存储 | /data/data/<包名>/ | 任意类型 | 应用独占 | 无需 | 敏感配置、临时缓存 |
外部存储 | /storage/emulated/0/ | 文件(媒体、文档) | 所有应用(受限于Android版本) | Android 10+需Scoped Storage | 用户文件、媒体共享 |
SQLite数据库 | /data/data/<包名>/databases/ | 结构化数据 | 应用独占 | 无需 | 本地业务数据、复杂查询 |
网络存储 | 远程服务器(如HTTP/FTP) | 任意类型 | 依赖服务端权限 | 需INTERNET 权限 | 跨设备同步、云备份 |
相关问题与解答
问题1:如何选择不同的存储方式?
解答:
- 内部存储:用于私有数据(如用户设置、缓存),无需权限且安全。
- 外部存储:用于用户生成的媒体文件或需共享的文件,注意Android 10+的权限限制。
- SQLite:适合结构化数据(如订单、聊天记录),需要频繁读写或复杂查询的场景。
- 网络存储:需跨设备同步或长期保存的数据(如云端配置文件、大文件备份)。
问题2:Android 10+的外部存储权限有何变化?
解答:
- 作用域存储(Scoped Storage):应用默认只能访问自身创建的文件或媒体应用(如图片、视频)的公共目录。
- 动态申请权限:仍需声明
READ_EXTERNAL_STORAGE
或WRITE_EXTERNAL_STORAGE
,但实际访问范围受限制。 - 替代方案:使用
Storage Access Framework
(如Intent.ACTION_OPEN_DOCUMENT
)让用户手动选择文件