APP开发中常有计算缓存大小和清空缓存的功能,此功能很常见,几乎每个应用都能看到,下面就用代码来实现此功能: 
步骤为: 
1、获取缓存路径 
获取长时间保存的文件,Context.getExternalFilesDir(); 
存储位置,SDCard/Android/data/你的应用的包名/files/ 
获取临时缓存, Context.getExternalCacheDir(); 
存储位置,SDCard/Android/data/你的应用包名/cache/ 
2、删除缓存

  1. package com.smartcontrol.utils;
  2.  
  3. import java.io.File;
  4. import java.math.BigDecimal;
  5. import android.content.Context;
  6. import android.os.Environment;
  7.  
  8. /**
  9. * 清除缓存
  10. *
  11. */
  12. public class CleanMessageUtil {
  13.  
  14. /**
  15. * @param context
  16. * @return
  17. * @throws Exception
  18. * 获取当前缓存
  19. */
  20. public static String getTotalCacheSize(Context context) throws Exception {
  21. long cacheSize = getFolderSize(context.getCacheDir());
  22. if (Environment.getExternalStorageState().equals(
  23. Environment.MEDIA_MOUNTED)) {
  24. cacheSize += getFolderSize(context.getExternalCacheDir());
  25. }
  26. return getFormatSize(cacheSize);
  27. }
  28.  
  29. /**
  30. * @param context
  31. * 删除缓存
  32. */
  33. public static void clearAllCache(Context context) {
  34. deleteDir(context.getCacheDir());
  35. if (Environment.getExternalStorageState().equals(
  36. Environment.MEDIA_MOUNTED)) {
  37. deleteDir(context.getExternalCacheDir());
  38. }
  39. }
  40.  
  41. private static boolean deleteDir(File dir) {
  42. if (dir != null && dir.isDirectory()) {
  43. String[] children = dir.list();
  44. int size = ;
  45. if (children != null) {
  46. size = children.length;
  47. for (int i = ; i < size; i++) {
  48. boolean success = deleteDir(new File(dir, children[i]));
  49. if (!success) {
  50. return false;
  51. }
  52. }
  53. }
  54.  
  55. }
  56. if (dir == null) {
  57. return true;
  58. } else {
  59.  
  60. return dir.delete();
  61. }
  62. }
  63.  
  64. // 获取文件
  65. // Context.getExternalFilesDir() --> SDCard/Android/data/你的应用的包名/files/
  66. // 目录,一般放一些长时间保存的数据
  67. // Context.getExternalCacheDir() -->
  68. // SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据
  69. public static long getFolderSize(File file) throws Exception {
  70. long size = ;
  71. try {
  72. File[] fileList = file.listFiles();
  73. int size2 = ;
  74. if (fileList != null) {
  75. size2 = fileList.length;
  76. for (int i = ; i < size2; i++) {
  77. // 如果下面还有文件
  78. if (fileList[i].isDirectory()) {
  79. size = size + getFolderSize(fileList[i]);
  80. } else {
  81. size = size + fileList[i].length();
  82. }
  83. }
  84. }
  85.  
  86. } catch (Exception e) {
  87. e.printStackTrace();
  88. }
  89. return size;
  90. }
  91.  
  92. /**
  93. * 格式化单位
  94. * 计算缓存的大小
  95. * @param size
  96. * @return
  97. */
  98. public static String getFormatSize(double size) {
  99. double kiloByte = size / ;
  100. if (kiloByte < ) {
  101. // return size + "Byte";
  102. return "0K";
  103. }
  104.  
  105. double megaByte = kiloByte / ;
  106. if (megaByte < ) {
  107. BigDecimal result1 = new BigDecimal(Double.toString(kiloByte));
  108. return result1.setScale(, BigDecimal.ROUND_HALF_UP)
  109. .toPlainString() + "KB";
  110. }
  111.  
  112. double gigaByte = megaByte / ;
  113. if (gigaByte < ) {
  114. BigDecimal result2 = new BigDecimal(Double.toString(megaByte));
  115. return result2.setScale(, BigDecimal.ROUND_HALF_UP)
  116. .toPlainString() + "MB";
  117. }
  118.  
  119. double teraBytes = gigaByte / ;
  120. if (teraBytes < ) {
  121. BigDecimal result3 = new BigDecimal(Double.toString(gigaByte));
  122. return result3.setScale(, BigDecimal.ROUND_HALF_UP)
  123. .toPlainString() + "GB";
  124. }
  125. BigDecimal result4 = new BigDecimal(teraBytes);
  126. return result4.setScale(, BigDecimal.ROUND_HALF_UP).toPlainString()
  127. + "TB";
  128. }
  129. }

上面代码是封装好的的类,点击调用时:

  1. CleanMessageUtil.clearAllCache(getApplicationContext());

Android 清空缓存的更多相关文章

  1. Android之计算缓存大小并且清空缓存

    转载博客:http://www.2cto.com/kf/201503/385492.html 项目中碰到了计算缓存大小和清空缓存的功能,这个很常见的功能,几乎每个APP都有,以为实现很简单,网上搜了一 ...

  2. Android图片缓存之Lru算法

    前言: 上篇我们总结了Bitmap的处理,同时对比了各种处理的效率以及对内存占用大小.我们得知一个应用如果使用大量图片就会导致OOM(out of memory),那该如何处理才能近可能的降低oom发 ...

  3. android 端缓存清理的实现

    首先关于缓存清理,网上已经有太多的工具类,但是遗憾的是,基本上都不完善,或者说根本就不能用,而项目中又要求实现这个烂东西(其实这玩意真没一点屁用,毕竟第三方清理/杀毒软件都带这么一个功能),但是只好硬 ...

  4. Android图片缓存之Glide进阶

    前言: 前面学习了Glide的简单使用(Android图片缓存之初识Glide),今天来学习一下Glide稍微复杂一点的使用. 图片缓存相关博客地址: Android图片缓存之Bitmap详解 And ...

  5. Android图片缓存之初识Glide

    前言: 前面总结学习了图片的使用以及Lru算法,今天来学习一下比较优秀的图片缓存开源框架.技术本身就要不断的更迭,从最初的自己使用SoftReference实现自己的图片缓存,到后来做电商项目自己的实 ...

  6. Android图片缓存之Bitmap详解

    前言: 最近准备研究一下图片缓存框架,基于这个想法觉得还是先了解有关图片缓存的基础知识,今天重点学习一下Bitmap.BitmapFactory这两个类. 图片缓存相关博客地址: Android图片缓 ...

  7. android 双缓存机制

    废话不多说,直接贴代码! 所谓的双缓存,第一就是缓存在内存里面,第二就是缓存在SD卡里面,当你需要加载数据时,先去内存缓存中查找,如果没有再去SD卡中查找,并且用户可以自选使用哪种缓存! 缓存内存和缓 ...

  8. Firefox每次刷新时自动清空缓存的设置方法

    当我们开发网页应用时候,为了保证每次看到的页面是最新的,需要在刷新页面时清除页面缓存. 如果每次都手动清除比较麻烦,好在多数浏览器都支持自动清除缓存的功能. IE下我们可以将缓存设置为"每次 ...

  9. Android数据缓存(转)

    Android数据缓存   1.http://blog.csdn.net/lnb333666/article/details/8460159 2.https://github.com/Trinea/a ...

随机推荐

  1. 使用官方组件下载图片,保存到MySQL数据库,保存到MongoDB数据库

    需要学习的地方,使用官方组件下载图片的用法,保存item到MySQL数据库 需要提前创建好MySQL数据库,根据item.py文件中的字段信息创建相应的数据表 1.items.py文件 from sc ...

  2. 39.date hitogram基础知识

    主要知识点: date hitogram之统计每月电视销量     上一节讲到histogram,他是以数值进行分组.本节讲到以日期进行bucket分组操作,也就是说把连续的日期变成离散的日期区间,然 ...

  3. css3 background-clip和background-origin 区别

    在css3中,background-clip和background-origin它们2个的功能大致相同,但又有些细微差别. 1.background-clip:规定背景的绘制区域,当背景是纯颜色时与图 ...

  4. odoo widget 标签介绍

    widget="statusbar" 头部状态条标签 widget="email" 电子邮件地址标签 widget="selection" ...

  5. [cogs736][网络流24题#13]星际转移[网络流,网络判定]

    将一个空间站分为天数个点,每次枚举天数,每增加一天就把对应天数的边连上,用网络流判定可行性,即-判断最大流是否不小于k,注意编号不要错位.通过此题,可见一些网络流题目需要用到网络判定方法,但虽然答案具 ...

  6. 开启mysql远程连接

    mysql默认只允许本地连接,也就是说,在安装完mysql后会存在两个root账户,他们的host分别是localhost和127.0.0.1 use mysql; update user set h ...

  7. supervisord进程管理工具小结

    前言 昨天临近下班,发现业务队列处理不及时,正好想到不久之前,上了一个新功能:通过队列异步转发微信消息.可能是消息太多了处理不过来,没怎么多想,处理不过来了,多增加处理进程就可以了,后来发现自己so ...

  8. OpenCV使用GPU

    在使用OpenCV2.4.x的时候,以为不用重新编译可以直接使用GPU模块,不过在我使用的时候,发现使用getCudaEnabledDeviceCount()的时候,总是获得是0,于是重新编译Open ...

  9. Machine_learning--score

    辛苦了2个半月,终须学完了machine-learning watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hyaXN0cHJpbmNlMDA3/font ...

  10. BPMN使用工具

    EA  非常多设计人员都在使用EA.他不仅支持UML,相同也全然支持BPMN2.0.<BPMN规范中的三种视图 >展示的BPMN中三种视图就是使用此工具所绘制. activitidesig ...