Android中的内部存储(对适配AndroidQ提供基础)

背景

首先来说一下写这篇文章的目的。大家都知道,目前Android系统已经更新到AndroidQ(10)AndroidQ(10)中改动大的有三个地方:

  • 存储空间的限制;
  • 定位权限(前台定位、后台定位);
  • 设备唯一标识。

而本篇文章对于存储空间限制的改动提供基础,想要做适配就必须了解Android中的内部存储和外部存储

内部存储路径

data/data/应用包名/对应路径

  • 第一个data:表示系统根目录下的一个文件夹
  • 第二个data:专门提供不同app存储内部数据的

需要注意的是:当前路径在真机上无法查看,如果有需要查看,例如操作数据库等,可以通过AndroidStudio中的FileExplorer查看

Android中的内部存储(对适配AndroidQ提供基础)_第1张图片
FileExplorer查看

对于手机上安装的每个app来说,系统都会在data/data目录下创建以应用包名为名字的文件夹

在对应目录下可查看以下文件夹:

  • cache:缓存目录,系统默认创建的
  • files:可以手动操作创建,除此之外所有文件夹都不能手动创建
  • database:数据库目录
  • shared_prefs: sp文件存储的目录
  • app_webview: webview缓存目录

接下来,就对每个目录依次介绍一下

cache目录
Android中的内部存储(对适配AndroidQ提供基础)_第2张图片
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,就会生成对应的缓存目录文件夹。

以上cachedatabaseshared_prefsapp_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中的外部存储

你可能感兴趣的:(Android中的内部存储(对适配AndroidQ提供基础))