1、清除缓存涉及到的方法

一般来说,比较常有且容易混淆的有下面这两组:

  • getCacheDir()与getFilesDir()
  • getExternalCacheDir()与getExternalCacheDir()

先说短的:

getCacheDir()方法获取的路径是/data/data//cache
getFilesDir()方法获取的路径是/data/data//files

再说长的:

Android应用程序在运行过程中,一般是把数据保存在SDCard中的(如果有)。大部分应用的做法是在SD下创建一个文件夹,然后把数据保存在这个文件夹中。但是当该应用被卸载后,这些数据还留在原处,所以需要我们在进行卸载应用操作的同时,帮用户清理掉这些(买卖不成仁义在)。而getExternalCacheDir()与getExternalCacheDir()方法可以拿到应用在SD卡中建立的缓存地址。
getExternalCacheDir()方法获取的路径是/SDCard/Android/data/你的应用包名/files目录,一般用来放置需要长时间保存的数据。
getExternalFilesDir()方法获取的路径是/SDCard/Android/data/你的应用包名/cache目录,一般用来放置临时缓存数据

2、实际代码

我们知道清除缓存一共分为两部:

  1. 拿到缓存地址
  2. 执行清除操作

让我们一个一个给出代码:

拿到缓存地址

public String getDiskCacheDir(Context context) {      String cachePath = null;      //判断是否有SD卡    if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())              || !Environment.isExternalStorageRemovable()) {          cachePath = context.getExternalCacheDir().getPath();      } else {          cachePath = context.getCacheDir().getPath();      }      return cachePath;  }

执行清除操作

public static boolean deleteDir(File dir) {        if (dir == null) return false;        // 目录不存在返回true        if (!dir.exists()) return true;        // 不是目录返回false        if (!dir.isDirectory()) return false;        // 现在文件存在且是文件夹        File[] files = dir.listFiles();        if (files != null && files.length != 0) {            for (File file : files) {                if (file.isFile()) {                    if (!deleteFile(file)) return false;                } else if (file.isDirectory()) {                    if (!deleteDir(file)) return false;                }            }        }        return dir.delete();    }

当然,这篇里的清除缓存只是一个初步浅层的清理,在之后我会继续补充,包括Android中不同关于文件夹的方法介绍和使用。

更多相关文章

  1. Android动画详解之Android动画属性和实现方法(一)
  2. android JNI utils/Log.h 找不到 解决方法
  3. android webview读取html和js .
  4. Android(安卓)中Webview 自适应屏幕
  5. Android(安卓)View的事件传递机制
  6. 代码设置EditText只输入数字、字母
  7. 深入研究Android事件传递与重绘
  8. Android中Math常用的方法,包括pow、abs、round、floor、rint、ran
  9. 利用Java反射技术调用Android中被隐藏的API

随机推荐

  1. 动态的JQUERY追加父子div。
  2. 在textarea上应用0高度div的类
  3. 我可以在JavaScript中从不同的页面传递参
  4. 为什么我不能删除数组的元素?
  5. JS 模仿块级作用域
  6. Javascript 面向对象编程(一):封装
  7. 轮播图---可以动态添加图片,(封装成一个函
  8. 如何淡入和淡出并改进我当前的JavaScript
  9. 切换页面时出现白屏闪烁
  10. 在导航图标css下包装文本。