浅谈Glide缓存的大小以及清除缓存
来源:互联网 发布:非农数据对石油的影响 编辑:程序博客网 时间:2024/04/30 17:20
在目前很多图片加载框架的实现中,我们选择了Glide就需要对其有一个深度的了解。在看完别的大神的代码和源码之后,有了以下的感想,给大家提供一个Glide的缓存的工具类。
在开始书写工具类之前,我们应该使用目前版本最高的Glide依赖
在开始书写工具类之前,我们应该使用目前版本最高的Glide依赖
compile 'com.github.bumptech.glide:glide:3.7.0'
添加如上依赖之后,新建一个工具类,具体代码如下:public class GlideHuanCun{private static GlideHuanCun inst;public static GlideHuanCun getInstance() { if (inst == null) { inst = new GlideHuanCun(); } return inst; }/** * 清除图片磁盘缓存 */public void clearImageDiskCache(final Context context) { try { if (Looper.myLooper() == Looper.getMainLooper()) { new Thread(new Runnable() {@Overridepublic 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
- 浅谈Glide缓存的大小以及清除缓存
- Glide获取缓存大小以及清除缓存
- 使用Glide获取图片缓存大小以及清除缓存
- Glide的缓存图片,清除缓存
- Android Glide获取缓存大小与清除缓存
- Glide获取缓存大小并清除缓存图片
- Android Glide缓存清除与获取缓存大小
- Glide获取缓存大小并清除缓存图片
- Glide获取缓存大小并清除缓存图片
- Android Glide获取缓存大小与清除缓存
- Glide 缓存工具例子,缓存大小获取,磁盘缓存清除(2 种方法),内存缓存清除
- 图片磁盘缓存量的大小显示和,清除缓存实现 ------ 基于glide
- Glide清除缓存
- Glide清除缓存
- 获取缓存的大小和清除缓存
- ios开发计算缓存的大小以及清除
- 浅谈Glide图片缓存
- Glide作为图片缓存,清除缓存的合理方法
- java网络编程——第一章 基本网络概念
- Java多线程模拟售票程序,及线程安全问题
- HRegionServer启动失败
- Python requests请求https遇到问题
- css的定位方式
- 浅谈Glide缓存的大小以及清除缓存
- Ubuntu Linux安装R和Rstudio笔记
- c++,c语言中的const用法
- 关于hashCode你必须要知道的三件事
- Java NIO系列教程(五) 通道之间的数据传输
- optitrack使用教程(1)
- Java网络编程——第二、三章 流
- 在sublime中安装haoide的package control失败的解决方案
- latex屏蔽所有插入的图片