Glide缓存工具类

*/

@SuppressWarnings("ResultOfMethodCallIgnored")

public class GlideCacheUtil {

private static GlideCacheUtil instance;

public static GlideCacheUtil getInstance() {

if (null == instance) {

instance = new GlideCacheUtil();

}

return instance;

}

// 获取Glide磁盘缓存大小

public String getCacheSize(Context mContext) {

try {

return getFormatSize(getFolderSize(new File(mContext.getCacheDir() + "/" + GlideCatchConfig.GLIDE_CARCH_DIR)));

} catch (Exception e) {

e.printStackTrace();

return "获取失败";

}

}

// 清除Glide磁盘缓存,自己获取缓存文件夹并删除方法

public boolean cleanCatchDisk(Context mContext) {

return deleteFolderFile(mContext.getCacheDir() + "/" + GlideCatchConfig.GLIDE_CARCH_DIR, true);

}

// 清除图片磁盘缓存,调用Glide自带方法

public boolean clearCacheDiskSelf(final Context mContext) {

try {

if (Looper.myLooper() == Looper.getMainLooper()) {

new Thread(new Runnable() {

@Override

public void run() {

Glide.get(mContext).clearDiskCache();

}

}).start();

} else {

Glide.get(mContext).clearDiskCache();

}

return true;

} catch (Exception e) {

e.printStackTrace();

return false;

}

}

// 清除Glide内存缓存

public boolean clearCacheMemory(Context mContext) {

try {

if (Looper.myLooper() == Looper.getMainLooper()) { //只能在主线程执行

Glide.get(mContext).clearMemory();

return true;

}

} catch (Exception e) {

e.printStackTrace();

}

return false;

}

// 获取指定文件夹内所有文件大小的和

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;

}

// 格式化单位

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

}

// 按目录删除文件夹文件方法

private boolean deleteFolderFile(String filePath, boolean deleteThisPath) {

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();

}

}

}

return true;

} catch (Exception e) {

e.printStackTrace();

return false;

}

}

}

glide默认的缓存图片路径地址_Glide图片硬盘缓存使用详解相关推荐

  1. springboot获取静态图片路径_Springboot通过图片路径形式获取图片

    Springboot通过图片路径形式获取图片 一致以来都是用 http://127.0.0.1:8888/getPhoto?imgUrl=1.jpg 的形式获取数据,今天突然要 http://127. ...

  2. ARP缓存表的构成ARP协议全面实战协议详解、攻击与防御

    ARP缓存表的构成ARP协议全面实战协议详解.攻击与防御 1.4.3  ARP缓存表的构成 在局域网的任何一台主机中,都有一个ARP缓存表.该缓存表中保存中多个ARP条目.每个ARP条目都是由一个IP ...

  3. html图片标签img的介绍以及基本用法详解

    <img> 元素向网页中嵌入一幅图像.<img> 标签有两个必需的属性:src 属性 和 alt 属性. 必需的属性 属性 值 描述 alt text 规定图像的替代文本. s ...

  4. 在哪里能看到计算机缓存大小,如何查看硬盘缓存信息?如何查看计算机硬盘缓存大小的插图...

    最近,一位网友"飞飞"问小编一个与计算机硬盘有关的问题:您如何看待硬盘缓存?硬盘缓存容量越大越好吗?由于通常在Windows系统的铭牌和硬盘表面上直接看不到硬盘缓存的大小,因此如何 ...

  5. ipv6简写还原_IPv6地址表示方法及其简化方法详解

    原标题:IPv6地址表示方法及其简化方法详解 对于一个完整的IPv6地址,需要写128位,已经被分成了8段,每段4个字符,也就是说完整地表示一个IPv6地址,需要写32个字母,这是相当长的,并且容易混 ...

  6. glide默认的缓存图片路径地址_手写一个静态资源中间件,加深了解服务器对文件请求的缓存策略...

    上一篇文章<详解页面静态资源的缓存策略,搞懂强缓存和协商缓存再做性能优化>我们从理论上介绍了浏览器和服务器是如何对静态资源做缓存的,这篇文章我们把它做成一个node服务器的静态资源中间件. ...

  7. 前端js通过图片路径,展示图片

    场景:图片文件存储在项目的一个文件夹里,数据库存储着图片的路径.前端需要获取到图片的路径并展示. 前端:通过获取的路径,拼接图片的src. //域名 var host="http://&qu ...

  8. wxhtmltopdf 图片路径问题_图片引入路径问题

    在这几日的学习中,发现这两种方式的图片引入有一定的差异,和url() 前者定义: 标签的 src 属性是必需的.它的值是图像文件的 URL,也就是引用该图像的文件的的绝对路径或相对路径. 后者定义: ...

  9. 【在JS中如何获取图片路径以及更改图片】

    //页面级内容<button id="div1">时间</button> img id="myimage" src="./im ...

最新文章

  1. KTV歌曲推荐-深入浅出协同过滤
  2. idea 修改Git密码和账号方法
  3. SQL如何备份到异机
  4. android 网络调试 源代码,Android源代码调试环境搭建
  5. 链表和顺序表的一些区别
  6. linux 修改块大小,linux 查看及修改os系统块的大小
  7. Unity环境下RTMP推流+RTMP播放低延迟解决方案
  8. 《Linux shell变量总结回顾》RHEL6(转)
  9. 代码健壮性的获得 —— 借助编译器及语言的语法特性
  10. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_6_Stream流中的常用方法_count...
  11. win10相机打不开,显示错误代码0xA00F4246(0x800706D9)
  12. 6款反垃圾邮件产品横向比较测试
  13. 视觉测量系统实现尺寸测量的4个步骤
  14. 简单实现图片多选功能
  15. 玩转 GitHub 更新Fork
  16. python selenium 点击 报错v_python执行selenium报错
  17. 8086汇编push和pop指令注意点(push pop 只对字操作(不允许字节进栈))
  18. 我爱机器学习 机器学习干货站- 资源
  19. ESRI电力输配电及电力设施管理解决方案
  20. 你不得不知道的设置canvas画布的宽和高的坑

热门文章

  1. android应用程序设计张思民课后答案,Java语言程序设计习题答案(清华大学出版杜)张思民版...
  2. Google 早期三驾马车之 GFS 论文学习与研读
  3. 如何不用串口线进行连接其他交换机
  4. 非211普通一本学生如何找IT名企实习?
  5. java swing GUI 模拟写字板项目源码,适合初级小白
  6. UI 设计师的盛宴:Web UI 设计资源大系
  7. Cog2DSymbolTool工具 读码工具
  8. F-投入产出练习的A + B(VI)
  9. n的阶乘最后一个非0的数
  10. 罗马数字转换阿拉伯数字(Java版,考虑较为全面)