Android中如何清除缓存

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中不同关于文件夹的方法介绍和使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值