IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 【Android】应用数据和文件#存储空间概览 -> 正文阅读

[移动开发]【Android】应用数据和文件#存储空间概览

Android 系统提供了以下几种保存应用数据的选项:

  • 应用专属存储空间:存储仅供应用使用的文件,可以存储到内部存储卷中的专属目录或外部存储空间中的其他专属目录。
  • 共享存储:存储应用打算与其他应用共享的文件,包括媒体、文档和其他文件。
  • 偏好设置:以键值对形式存储私有原始数据。
  • 数据库:使用 Room 持久性库将结构化数据存储在专用数据库中。

下表汇总了这些选项的特点:

内容类型访问方法所需权限其他应用是否可以访问?卸载应用时是否移除文件?
应用专属文件仅供应用使用的文件从内部存储空间访问,可以使用 getFilesDir() 或 getCacheDir() 方法不需要任何权限如果文件存储在内部存储空间中的目录内,则不能访问
从外部存储空间访问,可以使用 getExternalFilesDir() 或 getExternalCacheDir() 方法如果文件存储在外部存储空间中的目录内,则可以访问
媒体、文档和其他文件可共享的媒体文件(图片、音频文件、视频)MediaStore API在 Android 10(API 级别 29)或更高版本中,访问其他应用的文件需要 READ_EXTERNAL_STORAGE 或 WRITE_EXTERNAL_STORAGE 权限

在 Android 9(API 级别 28)或更低版本中,访问所有文件均需要相关权限
是,但其他应用需要 READ_EXTERNAL_STORAGE 权限
其他类型的可共享内容,包括已下载的文件存储访问框架是,可以通过系统文件选择器访问
应用偏好设置键值对Jetpack Preferences 库
数据库结构化数据Room 持久性库

存储位置的类别

Android 提供两类物理存储位置:内部存储空间外部存储空间

  • 在大多数设备上,内部存储空间小于外部存储空间内部存储空间中用于存储应用专属数据的空间有限。
  • 所有设备上的内部存储空间都是始终可用的,因此在存储应用所依赖的数据时更为可靠。存储在外部存储空间中的应用专属文件并非一直可以访问,因为有些设备允许用户移除提供外部存储空间的实体设备。
  • 在存储敏感数据(不可通过任何其他应用访问的数据)时,应使用内部存储空间、偏好设置或数据库。内部存储空间的一个额外优势是用户无法看到相应数据。

对外部存储空间的访问和所需权限

Android 为对外部存储空间的读写访问定义了以下权限:READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE

分区存储

为了让用户更好地管理自己的文件并减少混乱,以 Android 10(API 级别 29)及更高版本为目标平台的应用在默认情况下被赋予了外部存储空间分区访问权限(即分区存储)。此类应用只能访问外部存储空间上的应用专属目录,以及本应用所创建的特定类型的媒体文件

对文件执行操作的最佳做法

请勿反复打开和关闭文件

为确保应用的性能不受影响,请勿多次打开和关闭同一文件。对于系统来说,打开文件并首次读取文件的成本很高。

共享单个文件

  • 如果需要与其他应用共享特定文件,使用FileProviderAPI。
  • 如果需要向其他应用提供数据,可以使用内容提供器。借助内容提供器,可以完全控制向其他应用提供的读取和写入访问权限。尽管可以将内容提供器与任何存储媒介一起使用,但它们通常与数据库一起使用。

查看设备上的文件

可以使用 Android Studio 的设备文件浏览器查看存储在设备上的文件。

参考资料:数据和文件存储概览 | Android 开发者 | Android Developers

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-11-17 12:52:17  更:2021-11-17 12:52:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:00:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码