什么是以编程方式清除android应用程序中的缓存的正确方法.我已经使用了以下代码,但它看起来不适合我
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
clearApplicationData();
}
public void clearApplicationData() {
File cache = getCacheDir();
File appDir = new File(cache.getParent());
if (appDir.exists()) {
String[] children = appDir.list();
for (String s : children) {
if (!s.equals("lib")) {
deleteDir(new File(appDir, s));
Log.i("EEEEEERRRRRRROOOOOOORRRR", "**************** File /data/data/APP_PACKAGE/" + s + " DELETED *******************");
}
}
}
}
public 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();
}
Run Code Online (Sandbox Code Playgroud)

dha*_*ram 109
如果您正在寻找自己的应用程序的删除缓存,那么只需删除您的缓存目录,并完成所有操作!
public static void deleteCache(Context context) {
try {
File dir = context.getCacheDir();
deleteDir(dir);
} catch (Exception e) { e.printStackTrace();}
}
public 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();
} else if(dir!= null && dir.isFile()) {
return dir.delete();
} else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
Fin*_*sys 26
Kotlin有一个单行
context.cacheDir.deleteRecursively()
Run Code Online (Sandbox Code Playgroud)
Eir*_*k W 12
dhams的答案是正确的(经过多次编辑后),但是由于代码的许多编辑显示,很难自己编写用于删除目录(带子目录)的正确且健壮的代码.所以我强烈建议使用Apache Commons IO或其他一些为您执行此操作的API:
import org.apache.commons.io.FileUtils;
...
// Delete local cache dir (ignoring any errors):
FileUtils.deleteQuietly(context.getCacheDir());
Run Code Online (Sandbox Code Playgroud)
PS:如果你使用它,也删除context.getExternalCacheDir()返回的目录.
为了能够使用Apache Commons IO,请将其添加到您的build.gradle文件中,dependencies部分内容如下:
compile 'commons-io:commons-io:2.4'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
94338 次 |
| 最近记录: |