猿问

以编程方式在Android应用中清除缓存

什么是以编程方式清除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();

}


月关宝盒
浏览 630回答 3
3回答

呼啦一阵风

Kotlin有一个单行context.cacheDir.deleteRecursively()

ABOUTYOU

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'
随时随地看视频慕课网APP

相关分类

Android
我要回答