android之清理缓存实现
一. 清理缓存首先要搞清楚清理哪些东西,
- app本身的功能比如录像,录音,更新都会产生文件,需要清理
- app的默认缓存地址cache
二. 搞清楚要清理的文件夹位置
- 首先app自身的功能就要看自己把它放在了什么位置
- 默认缓存地址:getActivity().getExternalCacheDir();
这个位置是在storage/emulated/0/Android/data/com.xxxxxapp/cache
三. 搞起
代码功能模块:
- 获取app缓存大小,以字节为单位
- 获取某个文件夹的大小,以字节为单位
- 把字节单位换算成常用单位
- 把缓存大小设置到页面,清理前一次,清理后一次
- 删除文件夹功能
- 清除app缓存
/**
* 获取app的缓存大小
* 1. 录制的视频/storage/emulated/0/xueliangapp/video/1573972925136.mp4
* 2. 录制的音频/storage/emulated/0/xueliangapp/radio/1573972925136.amr
* 3. 下载的更新包/storage/emulated/0/Android/data/com.sdxzt.xueliangapp_v3/files/Download/xueliang_update.apk
* 4. 缓存/storage/emulated/0/Android/data/com.sdxzt.xueliangapp_v3/cache
*/
File videoDir,radioDir,filesDir,cacheDir;
private String getAppCache(){
long fileSize = 0;
String cacheSize = "0KB";
videoDir = new File(Environment.getExternalStorageDirectory()+"/xueliangapp/video");
Log.d(TAG, "getAppCache: videoDir大小: "+getDirSize(videoDir));
radioDir = new File(Environment.getExternalStorageDirectory()+"/xueliangapp/radio");
Log.d(TAG, "getAppCache: radioDir大小: "+getDirSize(radioDir));
filesDir = getActivity().getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
Log.d(TAG, "getAppCache: filesDir大小: "+getDirSize(filesDir));
///storage/emulated/0/Android/data/com.sdxzt.xueliangapp_v3/files,这里面有download文件夹,里面是下载的更新包
cacheDir = getActivity().getExternalCacheDir();
Log.d(TAG, "getAppCache: cacheDir大小: "+getDirSize(cacheDir));
///storage/emulated/0/Android/data/com.sdxzt.xueliangapp_v3/cache
fileSize += getDirSize(getActivity().getFilesDir())