android清理缓存实现,android之清理缓存实现
/**
* 获取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());
fileSize += getDirSize(getActivity().getCacheDir());//这行是默认的缓存地址,看图片什么的会在这里积累缓存
fileSize += getDirSize(videoDir);
fileSize += getDirSize(radioDir);
fileSize += getDirSize(filesDir);
fileSize += getDirSize(cacheDir);
String fileSizeStr = formatFileSize(fileSize);
Log.d(TAG, "getAppCache: 总缓存大小: "+fileSizeStr);
return fileSizeStr;
}
/**
* 获取文件大小(字节为单位)
* @param dir
* @return
*/
private long getDirSize(File dir) {
if (dir == null) {
return 0;
}
if (!dir.isDirectory()) {
return 0;
}
long dirSize = 0;
File[] files = dir.listFiles();
for (File file : files) {
if (file.isFile()) {
dirSize += file.length();//文件的长度就是文件的大小
} else if (file.isDirectory()) {
dirSize += file.length();
dirSize += getDirSize(file); // 递归调用继续统计
}
}
return dirSize;
}
/**
* 格式化文件长度
* @param fileSize
* @return
*/
private String formatFileSize(long fileSize){
DecimalFormat df = new DecimalFormat("#0.00");//表示小数点前至少一位,0也会显示,后保留两位
String fileSizeString = "";
if (fileSize < 1024) {
fileSizeString = df.format((double) fileSize) + "B";
} else if (fileSize < 1048576) {
fileSizeString = df.format((double) fileSize / 1024) + "KB";
} else if (fileSize < 1073741824) {
fileSizeString = df.format((double) fileSize / 1048576) + "MB";
} else {
fileSizeString = df.format((double) fileSize / 1073741824) + "G";
}
return fileSizeString;
}
private void setAppCache() {
String fileSize = getAppCache();
fileSizeTv.setText(fileSize);
Log.d(TAG, "setAppCache: 重新显示缓存大小");
Log.d(TAG, "setAppCache: 当前缓存"+fileSize);
}
public void clearAppCache(final Activity activity){
final Handler handler = new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
Log.d(TAG, "handlerMessage: ");
if (msg.what == 1) {
setAppCache();
Log.d(TAG, "handlerMessage: 缓存清除完毕");
ToastUtil.showMsg(getActivity(),"缓存清除完毕");
}else {
ToastUtil.showMsg(getActivity(),"缓存清除失败");
Log.d(TAG, "handlerMessage: 缓存清除失败");
}
}
};
new Thread(new Runnable() {
@Override
public void run() {
Log.d(TAG, "run: ");
Message msg = new Message();
try {
clearCacheFolder(videoDir,System.currentTimeMillis());
clearCacheFolder(radioDir,System.currentTimeMillis());
clearCacheFolder(filesDir,System.currentTimeMillis());
clearCacheFolder(cacheDir,System.currentTimeMillis());
msg.what = 1;
}catch (Exception e){
e.printStackTrace();
msg.what = -1;
}
handler.sendMessage(msg);
}
}).start();
}
/**
* 清除缓存目录
* @param dir 目录
* @param curTime 当前系统时间
*/
private int clearCacheFolder(File dir,long curTime){
int deletedFiles = 0;
if (dir!= null && dir.isDirectory()) {
try {
for (File child:dir.listFiles()) {
if (child.isDirectory()) {
deletedFiles += clearCacheFolder(child, curTime);
}
if (child.lastModified() < curTime) {
if (child.delete()) {
deletedFiles++;
}
}
}
} catch(Exception e) {
e.printStackTrace();
}
}
Log.d(TAG, "clearCacheFolder: 清除目录: "+dir.getAbsolutePath());
return deletedFiles;
}
android清理缓存实现,android之清理缓存实现相关推荐
- android 清理缓存动画,Android仿微信清理内存图表动画(解决surfaceView屏幕闪烁问题)demo实例详解...
最近接了一个项目其中有功能要实现一个清理内存,要求和微信的效果一样.于是想到用surfaceView而不是继承view.下面小编给大家解析下实现思路. surfaceView是为了解决频繁绘制动画产生 ...
- android清除缓存 代码,Android应用开发之Android应用清除缓存一般清理目录和代码的教程...
本文将带你了解Android应用开发Android应用清除缓存一般清理目录和代码的教程,希望本文对大家学Android有所帮助. 一个应用安装完成,会有缓存,缓存一般分为内部存储的和外置的,内存中路径 ...
- 苹果微信浏览器html缓存图片吗,h5清理微信浏览器网页缓存
前言: 缓存这个问题的出现,真真切切的感受到微信浏览器这鬼东西对前端程序员充满了恶意,捋捋自己的发型,甚是恐慌(顿时有种想转php的冲动,有木有). 解决方案: 出现缓存问题导致用户出现很多车祸现场( ...
- Android RecyclerView 绘制流程及Recycler缓存,Android开发者必看避坑指南
- mState.mIsMeasuring = false; if (mState.mLayoutStep == State.STEP_START) { dispatchLayoutStep1(); ...
- android 内部存储 清空,Android清空应用内部文件缓存
Android应用中加载的图片以及一些数据缓存怎么清掉呢?最近在做项目中遇到了这个问题,网上搜了一下找到了不少的源代码,综合了这些源码,下面给大家说一下吧,怎么有效的清除应用内存的缓存信息? 清除应用 ...
- Android开源框架——图片加载与缓存库 Picasso
介绍 Picasso是由Square开发的一款图片库,具有强大的下载与缓存功能,可以对图片进行处理.它简化了来自外部图片的处理过程,尤其是远程图片. 开源地址:https://github.com/s ...
- android glide的历史,Android 图片加载的那些事:为什么你的Glide 缓存没有起作用?...
前言Glide,该功能非常强大 Android 图片加载开源框架 相信大家并不陌生 正由于他的功能强大,所以它的源码非常复杂,这导致很多人望而却步 本人尝试将 Glide 的功能进行分解,并单独针对 ...
- Android之Bitmap高效缓存以及android缓存策略
Android之Bitmap高效缓存 一.Bitmap高效加载 1.bitmap的基本概念 位图:获取像素值进行加载. Bitmap是Android系统中图像处理中的最重要的一个类. 通过Bitmap ...
- android分享图片功能实现原理,Android:简单实现并理解图片三级缓存
学习Android网络开发的过程中,势必会经历很多痛苦的过程,其中一个大坑就是图片缓存,当然现在有很多现成的库非常方便,常常几行代码就可以实现想要的功能,但不懂其中的原理是不行的,所以对于刚开始学习网 ...
- IDEA:生成javadoc/断点调试/缓存和索引的清理
断点调试 1.Debug设置 选择shared memory: 2.常用断点调试快捷键: 3.条件断点: 可以在调试的时候,在循环里增加条件判断 在断点处右击调出条件断点,可以再满足某个条件下,实施断 ...
最新文章
- Android端访问服务器核心代码
- 计算机操作系统开启审计功能,深入浅出理解操作系统安全
- KVM虚拟机添加硬盘
- bat脚本中如何多次键盘输入并判断_电脑上如何多开微信?PC端多开微信的方法
- python3爬虫入门实例_10个python爬虫入门实例(小结)
- Java基础学习总结(167)——Java项目实践中如何实现幂等
- Dijkstra算法(朴素,堆优化)+例题
- Axure导入元件库和使用
- 东南大学2014计算机考研真题,2014年东南大学920信号数电考研真题(回忆版)
- firebug和firepath插件下载安装
- java开发系统架构_Java开发:ECP系统J2EE架构开发平台
- 15.2,opencv绘制人脸识别框
- Leetcode典型题解答和分析、归纳和汇总——T51(N皇后)
- Opencv基础使用3——HDR 图像合成
- 打通链上链下,构建全链条可信价值生态—长安链预言机
- 单元测试总结反思_语文单元考试反思
- 2022-2028全球静电模拟器枪行业调研及趋势分析报告
- Virgin Voyages将提供按需香槟配送服务“Shake for Champagne™”
- 读书笔记 - I heart logs
- Python | 爬虫抓取智联招聘(基础版)
热门文章
- 2019寒假作业2 编辑总结
- 阿里云虚拟主机装Wordpress怎么弄?
- ubuntu 16.04连不上wifi解决了
- mysql住址数据类型_MySql数据类型
- 美通企业日报 | 阿斯利康在京建中国北部总部;安踏用废弃塑料瓶打造环保服装...
- layaair发布html5,LayaAir今日全球首发 HTML5将步入重度精品时代
- 李彦宏一句“车水马龙”,中国AI的一幕天地宽广
- 【Android 低电耗/Doze原理---设备运动状态和位置对Doze模式的影响】
- [STM32F4]STM32F407 ADC采集+DMA传输
- python进制转化器(任意进制)