相关文章推荐
活泼的柚子  ·  blob转file ...·  1 月前    · 
腹黑的自行车  ·  php ...·  1 年前    · 
酒量小的小蝌蚪  ·  Oracle免客户端For ...·  1 年前    · 

Android 应用内部存储之应用文件缓存的 重点在最后总结,如果想快速学习,直接查看最后总结。


在向手机上保存数据,一般是把数据保存在sdcard中的。大部分应用是直接在sdcard的根目录下创建一个文件夹,然后把数据保存在该文件夹中。这样当该应用被卸载后,这些数据还保留在sdcard中,留下了垃圾数据。如果你想让你的应用被卸载后,与该应用相关的数据也清除掉,该怎么办呢?
如果Android应用程序需要缓存临时文件,需要存储到Android 应用内部存储,Android 应用内部存储之应用文件缓存有两种,一种是不可见的存储(存储在App内部缓存中,root之前无法查看文件,root之后才可查看,路径是/data/user/0/packname/cache)getCacheDir()存储,另一种是可见的存储getExternalCacheDir()(存储在App外部缓存中,名字看起来像是外部缓存,其实是Android 应用内部存储,路径是/storage/emulated/0/Android/data/packname/cache),可以从当前上下文(context)访问它们。

1.getCacheDir()
存储在App内部缓存中的文件在一个用程序卸载的时候将会被删除,当系统运行在低运行空间中也可能会被删除,属于临时存储。
2.getExternalCacheDir()
但是存储在App外部缓存(名字看起来像是外部缓存,其实是Android 应用内部存储)的文件则不会被删除,因为Android系统不允许追踪外部媒介的空用控件。通过context.getExternalCacheDir()方法可以获取到/storage/emulated/0/Android/data/packname/cache目录,一般存放临时缓存数据。


最后总结:
(1)getCacheDir()是存储在App内部缓存中,是不可见的存储(root之前无法查看文件,root之后才可查看,路径是/data/user/0/packname/cache)。
(2)getExternalCacheDir()是存储在App外部缓存中,是可见的存储( 名字看起来像是外部缓存,其实是Android 应用内部存储 ,路径是/storage/emulated/0/Android/data/packname/cache)。
(3)如果使用上面的方法,当你的应用在被用户卸后,/storage/emulated/0/Android/data/packname这个目录下的所有文件都会被删除,不会留下垃圾信息。
(4)getCacheDir()对应设置->应用->应用详情里面的”清除数据“选项,getExternalCacheDir()对应设置->应用->应用详情里面的”清除缓存“选项。

如对此有疑问,请联系qq1164688204。

推荐Android开源项目

项目功能介绍:RxJava2和Retrofit2项目,添加自动管理token功能,添加RxJava2生命周期管理,使用App架构设计是MVP模式和MVVM模式,同时使用组件化,部分代码使用Kotlin,此项目持续维护中。

项目地址:https://gitee.com/urasaki/RxJava2AndRetrofit2

Android应用内部存储之应用文件缓存的重点在最后总结,如果想快速学习,直接查看最后总结。在向手机上保存数据,一般是把数据保存在sdcard中的。大部分应用是直接在sdcard的根目录下创建一个文件夹,然后把数据保存在该文件夹中。这样当该应用被卸载后,这些数据还保留在sdcard中,留下了垃圾数据。如果你想让你的应用被卸载后,与该应用相关的数据也清除掉,该怎么办呢?如果Android应用程序需要缓存临时文件,需要存储到Android应用内部存储,Android应用内部存储之应用文件缓存有两种,一... 应用 的专属空间 存放 文件 的目录: 内部 存储 目录和外部 存储 目录。 应用 的专属空间 存放 文件 类型:持久 文件 缓存 文件 . 应用 不需要任何权限就可以对专属空间中的 文件 进行读写,而其他 应用 不允许访问这些 文件 应用 的专属空间 存放 文件 将在 应用 移除时一并移除. 专属空间 存储 实践 s1:新建 文件 File file = new File(App
Android 系统数据 存储 分为 内部 存储 和外部 存储 内部 存储 是手机系统自带的 存储 ,一般空间都不大,外部 存储 一般是SD卡的 存储 ,空间一般都比较大。一般我们会把 存储 内容放在外部 存储 空间里。在使用过程需要注意事项: 先判断SD卡是否可用,可用时优先使用SD卡的 存储 ,不可用时用 内部 存储 存储 在SD卡上时,可以在SD卡上新建任意一个目录 存放 ,也可以 存放 应用 程序 内部 文件 夹(APP专属 文件 ),区别是在SD卡的任意目录 存放 时内容不会随 应用 程序的卸载而消失,而在 应用 程序 内部 的内容会随 应用 程序卸载消失。 一般 缓存 文件 放在 应用 程序 内部 ,用户主动保存的 文件 放在SD卡上的 文件 夹里。 1. 内部 存储 ,外部 存储 的概念
1. Android APP统一 存储 数据规范 基于 Android 系统对 存储 卡访问的各种特性,在充分保证基线的产品交互体验前提下,定义 Android APP各业务开发中的可选 存储 路径,对应 存储 特性,各自适合 存储 文件 范围和 存储 路径格式规范。 存储 类型 存储 文件 范围 业务路径格式 内置数据分区 /data/../<packagename>/files/ (对应:Context.getFilesDir()) 1.APP被安装时系统分配在d.
Log.i("aa", "E "+getExternalCacheDir()+"`app:"+getCacheDir()); Log.i("aa", "E "+getExternalFilesDir(Environment.DIRECTORY_DCIM)+"`app:"+getFilesDir()); getExternalCacheDir():获取外部 缓存 路径,一般是:/storage/emulated/0/ Android /data/< packageName >/c...
存储 介绍 Android 系统分为 内部 存储 和外部 存储 内部 存储 是手机系统自带的 存储 ,一般空间都比较小,外部 存储 一般是SD卡的 存储 ,空间一般都比较大,但不一定可用或者剩余空间可能不足。一般我们 存储 内容都会放在外部 存储 空间里。使用过程注意事项: 1、先判断SD卡是否可用,可用时优先使用SD卡的 存储 ,不可用时用 内部 存储 2、 存储 在SD卡上时,可以在SD卡上新建任意一个目录 存放 ,也可以 存放 应用 程序 内部 文...
彻底搞懂 Android 文件 存储 --- 内部 存储 ,外部 存储 以及各种 存储 路径解惑 1、 Android 内部 存储 ,外部 存储 的概念 2、清除数据和清除 缓存 到底清除了什么数据 3、/storage/sdcard,/sdcard,/mnt/sdcard,/storage/emulated/0之间的关系 4、一张图看懂Ram,Rom,以及扩展 存储 (TF卡)的区别; 内部 存储 ,外部 存储 的区别。
存储 的类别 Android 提供两类物理 存储 位置 内部 存储 空间和外部 存储 空间。 在大多数设备上, 内部 存储 空间小于外部 存储 空间, 内部 存储 是手机系统自带的 存储 ,一般空间都比较小,外部 存储 一般是SD卡的 存储 ,空间一般都比较大,但不一定可用或者剩余空间可能不足。 默认情况下, 应用 本身 存储 内部 存储 空间中,可以在 应用 的清单 文件 中指明偏好设置,以便将 应用 安装到外部 存储 空间: <manifest ... android :installLocation="preferExternal">
Android 应用 程序可以使用 内部 存储 存储 应用 程序数据,如用户数据、 缓存 文件 、数据库等。 内部 存储 只允许 应用 程序本身访问 存储 的数据,其他 应用 程序无法访问。以下是 Android 应用 程序在不同版本中默认的 内部 存储 路径: - Android 2.1(API level 7)及以下版本:/data/data/<package_name>/files/ - Android 2.2(API level 8)及以上版本:/data/data/<package_name>/files/ 其中,<package_name>是你的 应用 程序的包名。在 Android Studio中,你可以使用以下代码获取 内部 存储 路径: ```java File filesDir = getFilesDir(); 或者,你可以使用以下代码获取 内部 缓存 路径: ```java File cacheDir = getCacheDir();