「这是我参与2022首次更文挑战的第10天,活动详情查看:2022首次更文挑战」
本地存储方式
Android 提供了多种可以永久保存数据的形式,可以根据不同是需求来使用不同的保存方式,保存数据的方式有:
- internal storage(内部存储,数据存储到手机内置存储器)
- external storage(外部存储,存储到外部SD卡)
- SharedPreferences(偏好设置)
- SQLite(本地数据库)
我们先来区分内存、内部存储、外部存储
1. 内存
内存(Memory/RAM),内存和内部存储是两个概念
内存是临时的数据存储器,断点之后就会消失,它的读取速度非常快。我们通常说的手机运行内存就是这个
CPU只能访问其寄存器(Register)和内存(Memory)。存储在硬盘上的数据必须首先传输到内存中才能被CPU访问
当一个程序加载到内存时,它的组成区域有:
- 堆栈
- 堆
- 数据
- 代码 我们可以看Java虚拟机相关技术文章
2. 内部存储数
直接在设备内部存储文件,默认情况下,保存到内部存储的文件是应用的私有文件,其他应用不能访问这些文件。当卸载应用时,这些文件也会被移除,存储目录是/data/data//files data目录下有两个目录:
- app 所有已安装的APP的apk存放目录
- data 各个程序放自己私有数据的地方,在这些数据其他人都是无法访问的,只有该APP的才能够访问。当然如果想将让其他的APP可以访问自己的APP的私有的数据,可以使用 ContentProvider 将想要公开的数据暴露出来
3. 外部存储数
在之前的时候内部存储和外部存储是分开的,但是随着Android手机的发展,现在都将内部存储和外部存储集成到了一个,只是逻辑上分了内部存储和外部存储,data目录就是就是就是手机的内部存储,而mnt或者storage目录下的sdcard目录就是外部存储
4. 如何获取内部存储和外部存储文件路径
可以使用Context来获取
- context.getFilesDir():获取手机内置存储器的/data/data//files目录,这个位置放存储文件
- context.getCacheDir():获取手机内置存储器的/data/data//cache目录,这个目录可以存放应用缓存文件
- context.getExternalFilesDir():获取SDCard/Android/data//files/目录,是外部存储的目录,当我们使用外部存储时,应该先判断外部存储介质是否存在,同时还要在应用权限中加入对sd卡的读写操作
下一篇我们介绍SharedPreferences