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();