android - 以编程方式清除 Android 应用程序中的缓存

标签 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();
}

Image from my android phone

最佳答案

如果您正在寻找自己应用程序的删除缓存,那么只需删除您的缓存目录即可!

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;
    }
}

关于android - 以编程方式清除 Android 应用程序中的缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23908189/

相关文章:

android - 具有自定义背景颜色的 Lollipop 按钮

android - 如何通过短信发送谷歌地图位置

java - 从 ArrayList 中删除对象时应用程序崩溃

java - java数据库中静态方法和单例的替代解决方案

java - 将 ArrayList<SomeClass> 转换为 ArrayList<SomeInterface>

android - 从 Realm 多对多关系中删除项目

java - 当我想从模型类获取数据时出现 NullPointerException

java - 自定义适配器不在 ListView 中显示文本

android - 使用 chrisjenx CalligraphyLayoutInflater 时出现 InflateException,android.view.InflateException

java - 在屏幕上绘制纬度和经度