目录
应用程序在 Android 系统运行过程中产生的用户数据、日志、下载的图片、文件等都需要存储在 Android 系统提供的存储空间里,所以有必要了解 Android 系统下存储空间的概念、分类、特点以及使用方法,在实际应用中采用适合的方式保存数据。
一、存储空间概述
从存储介质来说,Android 的存储空间用于数据持久化存储,属于 ROM 存储介质,手机关机或者退出 App 数据不会丢失,这里需要和经常提到的“内存”从概念上进行区分:内存属于 RAM 存储介质,退出 App 或者关机之后数据会丢失。我们在开发Android应用的过程中,避免不了要用到数据持久化技术,所谓的数据持久化就是将 RAM 中的临时数据永久性保存到 ROM 中,保证在 App 退出或者手机关机后数据不会丢失。
从存储结构来说,Android 系统的内核使用的是 Linux 内核, 所以 Android 的文件目录结构和 Linux 系统的文件目录结构类似。Android 系统使用虚拟文件系统(VFS), VFS 的目录是以"/"
为根节点,根节点下又有不同的节点。例如:/data, /sytem, /mnt, /storage 等等。
二、存储空间的划分
我们常用的数据持久化的方式有文件存储,数据库存储,SharedPreference存储等。在Android系统中有两个位置可以让应用实现数据持久化存储:内部存储和外部存储。
1、存储划分
在 Android 4.4 之前设备的机身存储就是内部存储,而为了弥补内部存储空间不足而插入的外置 SD 卡,称为外部存储。
在包含 Android 4.4 之后的设备中,很多中高端机器都将自己的机身存储扩展到了 8G 以上,将同一块存储空间从概念上分成了内部存储(internal storage) 和外部存储(external storage) 两部分,但其实它们都在手机内部。当然,依然可以插入 SD 卡来扩充存储空间,这部分的存储空间称为扩展的外部存储空间。只是现在机身存储都比较大,很少插入 SD 卡了。
上面两张图合并到一张图的展示:
2、内部存储
2.1 内部存储概述
前面提到过,Android 系统以"/"
为根节点,根节点下又有不同的节点,例如:/data, /sytem, /mnt, /storage 等。内部存储在逻辑上用目录来区分的话就是 /data 目录下的 data 文件夹:/data/data,这个目录普通用户是无权访问的,用户需要手机 ROOT 权限才可以查看。不过开发者可以通过 Android Studio 的 View ---- Tool Windows ---- Device File Explorer 工具来查看该目录,内部存储目录的大致结构如下图所示。
2.2 内部存储 - 私有目录
2.2.1 概述
从上图可以看到,/data/data