Glide:如何在App注销时清除所有App缓存(图像)?

时间:2016-10-07 16:26:17

标签: android caching android-glide

我在我的应用程序中使用Glide库。我想在注销过程中完全清除Glide完成的所有图像缓存(磁盘和内存)。

注销过程是通过Job完成的(我使用了这个库android-queue)。

我想称这些为:

Glide.get(MyApplication.getInstance()).clearMemory();
Glide.get(MyApplication.getInstance()).clearDiskCache();

当执行这些行时,我遇到一些关于线程的麻烦(不是主线程;如果我使用Handler,则会出现另一个错误,你必须在后台线程上调用此方法等)。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

如果您只想清除应用程序缓存,可以使用以下代码:

public static void deleteCache(Context context) {
    try {
        File dir = context.getCacheDir();
        deleteDir(dir);
    } catch (Exception e) {}
}

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

您可以将此代码与调用此代码的位置完全相同:

Glide.get(MyApplication.getInstance()).clearMemory();
Glide.get(MyApplication.getInstance()).clearDiskCache();