Glide获取缓存大小以及清除缓存

来源:互联网 发布:php手册中文版下载 编辑:程序博客网 时间:2024/05/01 00:59
compile 'com.github.bumptech.glide:glide:3.7.0'//调用工具类获取缓存大小
String cacheSize = GlideCacheUtil.getInstance().getCacheSize(this);clean.setText(cacheSize);//百度地图跳转 dingwei.setOnClickListener(new View.OnClickListener() {      @Override      public void onClick(View v) {          Intent intent=new Intent();          intent.setData(Uri.parse("baidumap://map?"));          startActivity(intent);      }  });//清除缓存clean.setOnClickListener(new View.OnClickListener() {      @Override      public void onClick(View v) {          //消除所有缓存     GlideCacheUtil.getInstance().clearImageAllCache(MainActivity.this);          //获取大小          String cacheSize = GlideCacheUtil.getInstance().getCacheSize(MainActivity.this);          clean.setText(cacheSize);      }  });





//工具类
public class GlideCacheUtil {    private static GlideCacheUtil inst;    public static GlideCacheUtil getInstance() {        if (inst == null) {            inst = new GlideCacheUtil();        }        return inst;    }    /**     * 清除图片磁盘缓存     */    public void clearImageDiskCache(final Context context) {        try {            if (Looper.myLooper() == Looper.getMainLooper()) {                new Thread(new Runnable() {                    @Override                    public void run() {                        Glide.get(context).clearDiskCache();//                        BusUtil.getBus().post(new GlideCacheClearSuccessEvent());                    }                }).start();            } else {                Glide.get(context).clearDiskCache();            }        } catch (Exception e) {            e.printStackTrace();        }    }    /**     * 清除图片内存缓存     */    public void clearImageMemoryCache(Context context) {        try {            if (Looper.myLooper() == Looper.getMainLooper()) { //只能在主线程执行                Glide.get(context).clearMemory();            }        } catch (Exception e) {            e.printStackTrace();        }    }    /**     * 清除图片所有缓存     */    public void clearImageAllCache(Context context) {        clearImageDiskCache(context);        clearImageMemoryCache(context);        String ImageExternalCatchDir=context.getExternalCacheDir()+ ExternalCacheDiskCacheFactory.DEFAULT_DISK_CACHE_DIR;        deleteFolderFile(ImageExternalCatchDir, true);    }    /**     * 获取Glide造成的缓存大小     *     * @return CacheSize     */    public String getCacheSize(Context context) {        try {            return getFormatSize(getFolderSize(new File(context.getCacheDir() + "/"+ InternalCacheDiskCacheFactory.DEFAULT_DISK_CACHE_DIR)));        } catch (Exception e) {            e.printStackTrace();        }        return "";    }    /**     * 获取指定文件夹内所有文件大小的和     *     * @param file file     * @return size     * @throws Exception     */    private 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     */    private 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     */    private 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";    }}



0 0
原创粉丝点击