什么是以编程方式清除android应用程序中的缓存的正确方法。我已经使用了以下代码,但它看起来不适合我@Overrideprotected 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();}
3 回答
ABOUTYOU
TA贡献1812条经验 获得超5个赞
dhams的答案是正确的(经过多次编辑后),但是由于代码的许多编辑显示,很难自己编写用于删除目录(带子目录)的正确且健壮的代码。所以我强烈建议使用Apache Commons IO或其他一些为您执行此操作的API:
import org.apache.commons.io.FileUtils;
...
// Delete local cache dir (ignoring any errors):
FileUtils.deleteQuietly(context.getCacheDir());
PS:如果你使用它,也删除context.getExternalCacheDir()返回的目录。
为了能够使用Apache Commons IO,请将其添加到您的build.gradle文件中,dependencies部分内容如下:
compile 'commons-io:commons-io:2.4'
- 3 回答
- 0 关注
- 629 浏览
添加回答
举报
0/150
提交
取消