安卓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清理缓存工具类相关推荐

  1. android 图片缓存工具类,Android工具类系列-Glide图片缓存与圆角

    Glide的图片缓存和清除图片缓存 public class GlideCacheUtil { private static GlideCacheUtil inst; public static Gl ...

  2. android 快速开发工具类,android面试知识点

    项目地址:570622566/FastAndrUtils  简介:android 快速开发工具类 更多:作者   提 Bug   官网 标签: Fastandrutils 是一套整理修改整合的 and ...

  3. Android常用的工具类

    2019独角兽企业重金招聘Python工程师标准>>> 最新最准确内容建议直接访问原文:Android常用的工具类 主要介绍总结的Android开发中常用的工具类,大部分同样适用于J ...

  4. Java 缓存工具类 Cache

    Java 缓存工具类 Cache 工具类定义 工具类定义 package com.demo.utils;import org.springframework.util.StringUtils;impo ...

  5. Android开发常用工具类集合

    转载自:https://blog.csdn.net/xiaoyi_tdcq/article/details/52902844 Android开发常用工具类集合 android开发中为了避免重复造轮子, ...

  6. 缓存工具类MyCacheUtil

    MyCacheUtil.java package com.sunrise.jop.common.util;import java.io.File; import java.sql.Timestamp; ...

  7. Android使用的工具类

    Android实用的工具类 https://github.com/AbrahamCaiJin/CommonUtilLibrary#获取app应用版本信息--appapplicationmgr

  8. 退出整个Android程序的工具类

    在实际的Android开发过程中常常有退出整个Android程序的需求,下面给大家介绍一下如何编写一个退出整个Android程序的工具类 package com.superGao.exitApp; i ...

  9. Android软键盘工具类

    Android软键盘工具类 public class SoftKeyboardUtils {/*** 隐藏或显示软键盘* 如果现在是显示调用后则隐藏 反之则显示*/public static void ...

  10. android 单位转换工具,Android单位转换工具类

    Android单位转换工具类 Android单位转换工具类主要由以下4部分构成 1.这个类不能被初始化 2.dip转px接口 3.sp转px接口 4.px转dip接口 代码如下: import and ...

最新文章

  1. 对java面试文章的技术漫谈的C#技术理解
  2. Libra教程之:move语言的特点和例子
  3. 输入法问题_「图」KB4515384再爆新问题:OOBE时中文输入法阻止创建本地账户
  4. 【TypeScript系列教程09】条件语句的使用
  5. PS教程第二十课:有了选区就有了界限
  6. php 智能输入提示插件,PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能_php实例...
  7. python自编一个循环计算题_Python练习:循环
  8. 【电源专题】BUCK电源效率和输出电压的关系
  9. 人工智能系列之一人工智能基本流程
  10. java实现五子棋获胜判断
  11. 解方程(equation)
  12. Android Beacon开发
  13. c语言程序设计21点扑克牌,C语言程序设计-21点扑克牌游戏.pdf
  14. 【2022研电赛】安谋科技企业命题一等奖:基于EAIDK-610的中国象棋机器人对弈系统
  15. 数据仓库工程师的职业规划
  16. 表情包受保护无法发送怎么破解和制作gif表情包
  17. jsp 爱心宠物诊所源码_“爱心宠物诊所”系统设计-JSP编程毕业设计
  18. 利用XGBoost实现短期电力负荷预测
  19. 地理信息系统(GIS)系列——绪论
  20. 用友ERP-U8最新破解(再次更新版本,附安装过程中的解决办法)

热门文章

  1. win10蓝牙android上网,Win10开启蓝牙移动热点共享上网教程
  2. WINRAR5.0破解
  3. 开发规约:接口统一返回值格式 [resend]
  4. android重建模拟器,Android建立模拟器进行调试
  5. java 网段_java IP地址网段计算的示例代码
  6. 关于设计(一)设计的概念和意义
  7. TCP连接异常终止(RST包)场景分析
  8. 手工焊的优缺点有哪些?
  9. 来 看 T r i e 吧
  10. 缓解精神内耗的“马原疗法”