Android Glide缓存清除与获取缓存大小

来源:互联网 发布:ios手机直播软件 编辑:程序博客网 时间:2024/05/28 15:36

http://blog.csdn.net/yaphetzhao/article/details/51729356


不多说了,还是直接上代码吧

/** * Created by zhaoyong on 2016/6/21. * Glide缓存工具类 */public class ImageCatchUtil {    private static ImageCatchUtil inst;    private final String ImageExternalCatchDir = Application.getInstance().getExternalCacheDir() + "/image_cache";    public static ImageCatchUtil getInstance() {        if (inst == null) {            inst = new ImageCatchUtil();        }        return inst;    }    /**     * 清除图片磁盘缓存     */    public void clearImageDiskCache() {        try {            if (Looper.myLooper() == Looper.getMainLooper()) {                new Thread(new Runnable() {                    @Override                    public void run() {                        Glide.get(Application.getInstance()).clearDiskCache();                    }                }).start();            } else {                Glide.get(Application.getInstance()).clearDiskCache();            }        } catch (Exception e) {            e.printStackTrace();        }    }    /**     * 清除图片内存缓存     */    public void clearImageMemoryCache() {        try {            if (Looper.myLooper() == Looper.getMainLooper()) { //只能在主线程执行                Glide.get(Application.getInstance()).clearMemory();            }        } catch (Exception e) {            e.printStackTrace();        }    }    /**     * 清除图片所有缓存     */    public void clearImageAllCache() {        clearImageDiskCache();        clearImageMemoryCache();        deleteFolderFile(ImageExternalCatchDir, true);    }    /**     * 获取Glide造成的缓存大小     *     * @return CacheSize     */    public String getCacheSize() {        try {            return getFormatSize(getFolderSize(new File(Application.getInstance().getCacheDir() + "/image_cache")));        } catch (Exception e) {            e.printStackTrace();        }        return "";    }    /**     * 获取指定文件夹内所有文件大小的和     *     * @param file file     * @return size     * @throws Exception     */    public long getFolderSize(File file) throws Exception {        long size = 0;        try {            File[] fileList = file.listFiles();            for (File aFileList : fileList) {                if (aFileList.isDirectory()) {                    size = size + getFolderSize(aFileList);                } else {                    size = size + aFileList.length();                }            }        } catch (Exception e) {            e.printStackTrace();        }        return size;    }    /**     * 删除指定目录下的文件,这里用于缓存的删除     *     * @param filePath       filePath     * @param deleteThisPath deleteThisPath     */    public void deleteFolderFile(String filePath, boolean deleteThisPath) {        if (!TextUtils.isEmpty(filePath)) {            try {                File file = new File(filePath);                if (file.isDirectory()) {                    File files[] = file.listFiles();                    for (File file1 : files) {                        deleteFolderFile(file1.getAbsolutePath(), true);                    }                }                if (deleteThisPath) {                    if (!file.isDirectory()) {                        file.delete();                    } else {                        if (file.listFiles().length == 0) {                            file.delete();                        }                    }                }            } catch (Exception e) {                e.printStackTrace();            }        }    }    /**     * 格式化单位     *     * @param size size     * @return size     */    public static String getFormatSize(double size) {        double kiloByte = size / 1024;        if (kiloByte < 1) {            return size + "Byte";        }        double megaByte = kiloByte / 1024;        if (megaByte < 1) {            BigDecimal result1 = new BigDecimal(Double.toString(kiloByte));            return result1.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "KB";        }        double gigaByte = megaByte / 1024;        if (gigaByte < 1) {            BigDecimal result2 = new BigDecimal(Double.toString(megaByte));            return result2.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "MB";        }        double teraBytes = gigaByte / 1024;        if (teraBytes < 1) {            BigDecimal result3 = new BigDecimal(Double.toString(gigaByte));            return result3.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "GB";        }        BigDecimal result4 = new BigDecimal(teraBytes);        return result4.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "TB";    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165

GlideConfiguration配置文件,指定缓存目录等方法都在这里面

import android.content.Context;import com.bumptech.glide.Glide;import com.bumptech.glide.GlideBuilder;import com.bumptech.glide.load.DecodeFormat;import com.bumptech.glide.load.engine.bitmap_recycle.LruBitmapPool;import com.bumptech.glide.load.engine.cache.InternalCacheDiskCacheFactory;import com.bumptech.glide.load.engine.cache.LruResourceCache;import com.bumptech.glide.load.engine.cache.MemorySizeCalculator;import com.bumptech.glide.module.GlideModule;/** * Created by zhaoyong on 2016/6/16. * Glide配置文件 */public class GlideConfiguration implements GlideModule {    @Override    public void applyOptions(Context context, GlideBuilder builder) {        //自定义缓存目录,磁盘缓存给150M        builder.setDiskCache(new InternalCacheDiskCacheFactory(context, "image_catch", 150 * 1024 * 1024));    }    @Override    public void registerComponents(Context context, Glide glide) {    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

Manifest.xml

 <!--Glide配置文件--><meta-data android:name="com.xxx.xxx.glide.config.GlideConfiguration" android:value="GlideModule" />
  • 1
  • 2
  • 1
  • 2

0 0