美文网首页待看适配
Android中的内部存储(对适配AndroidQ提供基础)

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

作者: 会撒娇的犀犀利 | 来源:发表于2019-12-09 09:39 被阅读0次

    背景

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

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

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

    内部存储路径

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

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

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

    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,就会生成对应的缓存目录文件夹。

    以上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提供基础)

        本文链接:https://www.haomeiwen.com/subject/bcfbgctx.html