背景
首先来说一下写这篇文章的目的。大家都知道,目前Android系统已经更新到AndroidQ(10)
,AndroidQ(10)
中改动大的有三个地方:
- 存储空间的限制;
- 定位权限(前台定位、后台定位);
- 设备唯一标识。
而本篇文章对于存储空间限制
的改动提供基础,想要做适配就必须了解Android中的内部存储和外部存储
。
内部存储路径
data/data/应用包名/对应路径
- 第一个data:表示系统根目录下的一个文件夹
- 第二个data:专门提供不同app存储内部数据的
需要注意的是:当前路径在真机上无法查看,如果有需要查看,例如操作数据库等,可以通过AndroidStudio中的FileExplorer
查看
对于手机上安装的每个app来说,系统都会在data/data
目录下创建以应用包名为名字的文件夹。
在对应目录下可查看以下文件夹:
- cache:缓存目录,系统默认创建的
- files:可以手动操作创建,除此之外所有文件夹都不能手动创建
- database:数据库目录
- shared_prefs: sp文件存储的目录
- app_webview: webview缓存目录
接下来,就对每个目录依次介绍一下
cache目录
image系统默认创建的,让我们用来存储app的缓存数据
database目录
image系统自动创建的,可以用户需要的数据库文件,以.db
结尾。
shared_prefs目录
image我们在项目中经常会使用sp,如下面代码:
SharedPreferences test_sp = getSharedPreferences("my_sp", MODE_PRIVATE);
SharedPreferences.Editor edit = test_sp.edit();
edit.putString("myName", "myName");
edit.commit();
一旦提交后,就会生成“my_sp.xml”
文件,这个文件中都是我们需要存放的sp内容。
app_webview目录
image很容易的看出,这个存放webview缓存的。如果项目中有用到的webview,就会生成对应的缓存目录文件夹。
以上cache
、database
、shared_prefs
、app_webview
四个目录都为系统自动创建,而files
目录则是我们可以创建的。
files目录
image此目录是我们可以手动生成的,当调用以下代码时会生成:
//这个是Context对象的方法
//返回一个File对象,这个对象的路径是data/data/包名/files/
File filesDir = getFilesDir();
String absolutePath = filesDir.getAbsolutePath();
我们还可以在此目录下创建文件,下载文件等。
区分 File cacheDir = getCacheDir();
与File filesDir = getFilesDir();
当手机内存存储空间比较低时,cache目录下的所有文件可能都会被删除。
在手机系统管理器中,我们经常看到清除缓存和清除数据这两个功能。
- 清除缓存:清除的是cache目录下的数据
- 清除数据:清除的是整个应用的内部存储数据
内部存储目录下的文件夹会随着app的卸载而被系统自动删除。
下一篇文章:Android中的外部存储
网友评论