您的位置:首页 > 移动开发 > Android开发

Android中如何清除缓存

2017-08-13 16:05 330 查看

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、实际代码

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

拿到缓存地址

执行清除操作

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

拿到缓存地址

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中不同关于文件夹的方法介绍和使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android