Android清理缓存工具类
安卓APP中清理缓存功能,不单单是系统优化工具之类的软件才有的。。。普通的APP也很常见要有显示缓存大小、清理缓存的功能。这种需求也相对比较简单,只是操作本应用的缓存目录罢了。
安卓应用的缓存目录一般有两个,一个在系统分区–本应用文件夹的cache目录,另一个在外部存储区域(比如SD卡或者非系统分区)–本应用文件夹的cache目录(不一定是这个目录,视开发者或者用户设置而定)。
获取总缓存大小,无非是获取cache文件夹下所有文件的大小总和,如果有多层文件夹嵌套则使用递归获取,最后把内存单位转化成我们熟悉的KB、MB等。清理缓存是删除cache目录下的所有文件。以下是操作这两个文件夹的工具类:
public class CacheUtil {/*** 获取缓存大小* @param context* @return* @throws Exception*/public static String getTotalCacheSize(Context context) throws Exception {long cacheSize = getFolderSize(context.getCacheDir());if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {cacheSize += getFolderSize(context.getExternalCacheDir());}return getFormatSize(cacheSize);}public static void clearAllCache(Context context) {deleteDir(context.getCacheDir());if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {deleteDir(context.getExternalCacheDir());}}private static boolean deleteDir(File dir) {if (dir != null && dir.isDirectory()) {String[] children = dir.list();for (int i = 0; i < children.length; i++) {boolean success = deleteDir(new File(dir, children[i]));if (!success) {return false;}}}return dir.delete();}// 获取文件//Context.getExternalFilesDir() --> SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据//Context.getExternalCacheDir() --> SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据public static long getFolderSize(File file) throws Exception {long size = 0;try {File[] fileList = file.listFiles();for (int i = 0; i < fileList.length; i++) {// 如果下面还有文件if (fileList[i].isDirectory()) {size = size + getFolderSize(fileList[i]);} else {size = size + fileList[i].length();}}} catch (Exception e) {e.printStackTrace();}return size;}/*** 格式化单位** @param size* @return*/public static String getFormatSize(double size) {double kiloByte = size / 1024;if (kiloByte < 1) {
// return size + "Byte";return "0K";}double megaByte = kiloByte / 1024;if (megaByte < 1) {BigDecimal result1 = new BigDecimal(Double.toString(kiloByte));return result1.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "KB";}double gigaByte = megaByte / 1024;if (gigaByte < 1) {BigDecimal result2 = new BigDecimal(Double.toString(megaByte));return result2.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "MB";}double teraBytes = gigaByte / 1024;if (teraBytes < 1) {BigDecimal result3 = new BigDecimal(Double.toString(gigaByte));return result3.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "GB";}BigDecimal result4 = new BigDecimal(teraBytes);return result4.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString()+ "TB";}}
——-关于使用(别忘了在AndroidManifest.xml中声明读写内存的权限)——-
获取缓存大小:
try {textView.setText(CacheUtil.getTotalCacheSize(context));
} catch (Exception e) {e.printStackTrace();
}
清理缓存:
CacheUtil.clearAllCache(context);
Toast.makeText(context,"缓存已清理",Toast.LENGTH_SHORT).show();
Android清理缓存工具类相关推荐
- android 图片缓存工具类,Android工具类系列-Glide图片缓存与圆角
Glide的图片缓存和清除图片缓存 public class GlideCacheUtil { private static GlideCacheUtil inst; public static Gl ...
- android 快速开发工具类,android面试知识点
项目地址:570622566/FastAndrUtils 简介:android 快速开发工具类 更多:作者 提 Bug 官网 标签: Fastandrutils 是一套整理修改整合的 and ...
- Android常用的工具类
2019独角兽企业重金招聘Python工程师标准>>> 最新最准确内容建议直接访问原文:Android常用的工具类 主要介绍总结的Android开发中常用的工具类,大部分同样适用于J ...
- Java 缓存工具类 Cache
Java 缓存工具类 Cache 工具类定义 工具类定义 package com.demo.utils;import org.springframework.util.StringUtils;impo ...
- Android开发常用工具类集合
转载自:https://blog.csdn.net/xiaoyi_tdcq/article/details/52902844 Android开发常用工具类集合 android开发中为了避免重复造轮子, ...
- 缓存工具类MyCacheUtil
MyCacheUtil.java package com.sunrise.jop.common.util;import java.io.File; import java.sql.Timestamp; ...
- Android使用的工具类
Android实用的工具类 https://github.com/AbrahamCaiJin/CommonUtilLibrary#获取app应用版本信息--appapplicationmgr
- 退出整个Android程序的工具类
在实际的Android开发过程中常常有退出整个Android程序的需求,下面给大家介绍一下如何编写一个退出整个Android程序的工具类 package com.superGao.exitApp; i ...
- Android软键盘工具类
Android软键盘工具类 public class SoftKeyboardUtils {/*** 隐藏或显示软键盘* 如果现在是显示调用后则隐藏 反之则显示*/public static void ...
- android 单位转换工具,Android单位转换工具类
Android单位转换工具类 Android单位转换工具类主要由以下4部分构成 1.这个类不能被初始化 2.dip转px接口 3.sp转px接口 4.px转dip接口 代码如下: import and ...
最新文章
- 对java面试文章的技术漫谈的C#技术理解
- Libra教程之:move语言的特点和例子
- 输入法问题_「图」KB4515384再爆新问题:OOBE时中文输入法阻止创建本地账户
- 【TypeScript系列教程09】条件语句的使用
- PS教程第二十课:有了选区就有了界限
- php 智能输入提示插件,PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能_php实例...
- python自编一个循环计算题_Python练习:循环
- 【电源专题】BUCK电源效率和输出电压的关系
- 人工智能系列之一人工智能基本流程
- java实现五子棋获胜判断
- 解方程(equation)
- Android Beacon开发
- c语言程序设计21点扑克牌,C语言程序设计-21点扑克牌游戏.pdf
- 【2022研电赛】安谋科技企业命题一等奖:基于EAIDK-610的中国象棋机器人对弈系统
- 数据仓库工程师的职业规划
- 表情包受保护无法发送怎么破解和制作gif表情包
- jsp 爱心宠物诊所源码_“爱心宠物诊所”系统设计-JSP编程毕业设计
- 利用XGBoost实现短期电力负荷预测
- 地理信息系统(GIS)系列——绪论
- 用友ERP-U8最新破解(再次更新版本,附安装过程中的解决办法)