首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我的Glide没有缓存图像?好像重新下载了图片

Glide是一款流行的Android图片加载库,它提供了丰富的功能和灵活的配置选项。当使用Glide加载图片时,如果发现图片已经被缓存过,它会优先从缓存中加载图片,而不是重新下载。

然而,如果你发现Glide没有缓存图像并且每次都重新下载图片,可能有以下几个原因:

  1. 缓存策略配置错误:Glide提供了多种缓存策略,包括全部缓存、仅缓存原始尺寸、不缓存等。你需要检查你的Glide配置,确保使用了适当的缓存策略。可以通过以下方式配置缓存策略:
代码语言:txt
复制
Glide.with(context)
    .load(imageUrl)
    .diskCacheStrategy(DiskCacheStrategy.ALL) // 设置缓存策略
    .into(imageView);
  1. 图片URL不唯一:Glide使用图片URL作为缓存的唯一标识。如果你每次加载的图片URL都不同,那么Glide会认为这是不同的图片,不会使用缓存。确保你的图片URL在每次加载时是唯一的。
  2. 缓存被清除:Glide的缓存是有大小限制的,当缓存达到一定大小时,会自动清除旧的缓存。如果你的图片缓存超过了这个限制,旧的缓存可能会被清除,导致每次都重新下载图片。你可以通过以下方式设置缓存大小:
代码语言:txt
复制
GlideBuilder builder = new GlideBuilder();
builder.setDiskCache(new InternalCacheDiskCacheFactory(context, cacheSize));
Glide.init(builder);
  1. 图片URL不支持缓存:有些图片URL可能会设置了缓存控制头,指示客户端不缓存该图片。这种情况下,即使使用了Glide,图片也不会被缓存。你可以通过检查图片URL的响应头信息来确定是否支持缓存。

总结起来,如果你的Glide没有缓存图像并且每次都重新下载图片,你需要检查缓存策略的配置、图片URL的唯一性、缓存大小的设置以及图片URL是否支持缓存。如果问题仍然存在,你可以查阅Glide的官方文档(https://github.com/bumptech/glide)获取更多帮助和支持。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android图片加载:为什么Glide缓存没有起作用?

接下来,将推出一系列关于 Glide功能源码分析,有兴趣可以继续关注 今天,将主要讲解在使用Glide缓存功能时问题:为什么Glide 缓存无起作用,希望你们会喜欢。 1....背景 Glide实现内存 & 磁盘缓存是根据 图片缓存Key进行唯一标识 开发者为了降低成本 & 安全,往往会将图片存放在云服务器上 为了保护 客户图片资源,图片云服务器 会在图片Url地址基础上再加一个...解决方案 3.1 原理 在 生成缓存Key id参数 前,将 带有token参数图片Url地址 去掉 token参数,从而根据 初始图片Url地址 生成缓存Keyid参数 实现一个图片缓存...即直接将传入传入图片url地址作为缓存keyId参数,而没有对token参数作任何处理 4....总结 本文主要对**Glide图片缓存功能**使用问题进行讲解 关于Glide相关文章阅读 Android源码分析:手把手带你分析 Glide缓存功能 Android源码分析:这是一份详细图片加载库

81820

Android 图片加载那些事:为什么Glide 缓存没有起作用?

接下来,将推出一系列关于 Glide功能源码分析,有兴趣可以继续关注 今天,将主要讲解在使用Glide缓存功能时问题:为什么Glide 缓存无起作用,希望你们会喜欢。...解决方案 3.1 原理 在 生成缓存Key id参数 前,将 带有token参数图片Url地址 去掉 token参数,从而根据 初始图片Url地址 生成缓存Keyid参数 实现一个图片缓存...即直接将传入传入图片url地址作为缓存keyId参数,而没有对token参数作任何处理 ---- 4....总结 本文主要对Glide图片缓存功能使用问题进行讲解 关于Glide相关文章阅读 Android源码分析:手把手带你分析 Glide缓存功能 Android源码分析:这是一份详细图片加载库...Glide源码讲解攻略 Android图片加载库:最全面解析Glide用法 下面将继续对 Glide 其他功能进行源码分析 ,有兴趣可以继续关注Carson_Ho安卓开发笔记 ---- 帮顶

2K40
  • Android图片加载库:最全面解析Glide用法

    前言 上文已经对当今Android主流图片加载库进行了全面介绍 & 对比 如果你还没阅读,建议你先移步这里进行查看 今天我们来学习一下其中一个Android主流图片加载库使用 - Glide...从上面可以看出,Glide不仅实现图片异步加载功能,还解决Android中加载图片时需要解决一些常见问题 接下来,我会对Glide每个功能点进行详细介绍 2.2 功能介绍 2.2.1 关于图片加载...//传一个 0.1f 作为参数,Glide 将会显示原始图像10%大小。...//在我们上面略缩图例子中,将会只有一个1000x1000 像素图片 //RESULT:缓存转换后资源(最终图像,即降低分辨率后(或者是转换后) 设置跳过内存缓存 Glide .with...Demo实例 没有Demo代码讲解不是好文章,让我们来一步步学会使用Glide

    3.4K10

    Carson带你学Android:最全面解析图片加载库Glide用法

    功能特点 2.1 功能列表 从上面可以看出,Glide不仅实现图片异步加载功能,还解决Android中加载图片时需要解决一些常见问题 接下来,我会对Glide每个功能点进行详细介绍 2.2...//传一个 0.1f 作为参数,Glide 将会显示原始图像10%大小。...:不缓存任何图片,即禁用磁盘缓存 // DiskCacheStrategy.ALL :缓存原始图片 & 转换后图片(默认) // DiskCacheStrategy.SOURCE:只缓存原始图片(原来全分辨率图像...,即不缓存转换后图片) // DiskCacheStrategy.RESULT:只缓存转换后图片(即最终图像:降低分辨率后 / 或者转换后 ,不缓存原始图片 设置跳过内存缓存 Glide .with...Demo实例 没有Demo代码讲解不是好文章,让我们来一步步学会使用Glide

    86620

    Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide图片缓存联系与区别

    有以下优点: 处理Adapter中 ImageView 回收和取消已经回收ImageView下载进程 使用最少内存完成复杂图片转换,比如把下载图片转换为圆角等 自动添加磁盘和内存缓存 如果你项目里面...Glide加载图像以及磁盘缓存方式都要优于Picasso,速度更快,并且Glide更有利于减少OutOfMemoryError发生,GIF动画是Glide杀手锏。...可以看到Glide加载图片质量要差于Picasso为什么?这是因为Glide默认Bitmap格式是RGB_565 ,比ARGB_8888格式内存开销要小一半。...尽管一张图片已经缓存一次,但是假如你要在另外一个地方再次以不同尺寸显示,需要重新下载,调整成新尺寸大小,然后将这个尺寸缓存起来。...); 下次在任何ImageView中加载图片时候,全尺寸图片将从缓存中取出,重新调整大小,然后缓存

    1.3K70

    Google推荐图片加载库Glide介绍

    Glide则不同,它会为每种大小ImageView缓存一次。尽管一张图片已经缓存一次,但是假如你要在另外一个地方再次以不同尺寸显示,需要重新下载,调整成新尺寸大小,然后将这个尺寸缓存起来。...加载图片没有Picasso那么平滑,没有找到一个可以直观改变图片大小调整算法方法。...Glide则不同,它会为每种大小ImageView缓存一次。尽管一张图片已经缓存一次,但是假如你要在另外一个地方再次以不同尺寸显示,需要重新下载,调整成新尺寸大小,然后将这个尺寸缓存起来。...Image质量细节 这是将ImageView还原到真实大小时比较。 你可以看到,Glide加载图片没有Picasso那么平滑,没有找到一个可以直观改变图片大小调整算法方法。...尽管一张图片已经缓存一次,但是假如你要在另外一个地方再次以不同尺寸显示,需要重新下载,调整成新尺寸大小,然后将这个尺寸缓存起来。

    81320

    Glide用法与技巧以及优秀库推荐

    最后Glide,google维护。Picasson优化版,使用简单,也许没有Fresco那么强大,但是觉得完全可以hold住大部分项目。...所以我建议传参时候传递Activity 和 Fragment给Glide,而不是Context。 2.Glide加载图片质量要略差于Picasso,这又是为什么呢?...Picasso缓存是全尺寸,而Glide缓存是跟ImageView尺寸相同Glide这种方式优点是加载显示非常快。而Picasso方式则因为需要在显示之前重新调整大小而导致一些延迟。...什么都不缓存 DiskCacheStrategy.SOURCE仅仅只缓存原来全分辨率图像 DiskCacheStrategy.RESULT仅仅缓存最终图像,即降低分辨率后(或者是转换后) DiskCacheStrategy.ALL...缓存所有版本图像(默认行为) 8.优先级,设置图片加载顺序: Glide.with(context).load(imageUrl).priority( Priority.HIGH).into( imageView

    74420

    Android图片加载框架最全解析(八),带你全面了解Glide 4用法

    因为Glide有非常强大缓存机制,我们刚才加载图片时候Glide自动就已经将它缓存下来了,下次加载时候将会直接从缓存中读取,不会再去网络下载,因而加载速度非常快,所以占位图可能根本来不及显示。...也就是说,当我们使用Glide加载一张图片之后,这张图片就会被缓存到内存当中,只要在它还没从内存中被清除之前,下次使用Glide再加载这张图片都会直接从内存当中读取,而不用重新从网络或硬盘上读取了,这样无疑就可以大幅度提升图片加载效率...2. preload()方法 Glide加载图片虽说非常智能,它会自动判断该图片是否已经有缓存,如果有的话就直接从缓存中读取,没有的话再从网络去下载。...接下来我们调用FutureTargetget()方法就可以去获取下载图片文件,如果此时图片没有下载完,那么get()方法就会阻塞住,一直等到图片下载完成才会有值返回。...举个例子,比如说我们刚才使用了preload()方法来对图片进行预加载,但是怎样确定预加载有没有完成呢?还有如果Glide加载图片失败该怎样调试错误原因呢?

    2.6K70

    glide 一个强大图片加载框架

    其实,glide 在前几年时候,还没有多少人使用,当时较流行 UniversalImageLoader、Picasso。...福利.gif 可以看到图片加载速度是非常快,基本上是瞬间加载完成(别问我为什么加载妹子图片乐意) 3、最后别忘了加载网络图片需要加上网络权限 <uses-permission android...DiskCacheStrategy.NONE:什么都不缓存 DiskCacheStrategy.SOURCE 仅仅只缓存原来全分辨率图像...、DiskCacheStrategy.RESULT:仅仅缓存最终图像 DiskCacheStrategy.ALL:缓存所有版本图像(默认行为) error() 当我们因为某些异常情况导致图片加载失败...glide 从来不会直接将图片完整尺寸全部加载到内存中,而是用多少加载多少,如果我们真的有指定图片大小这种需求的话,调用 override() 方法就好了 以上便是本文全部文章,具体代码已经上传到

    40840

    Android源码分析:手把手带你分析 Glide缓存功能

    接下来,将推出一系列关于 Glide功能源码分析,有兴趣可以继续关注 今天,将主要针对Glide图片缓存功能 进行流程 & 源码分析 ,希望你们会喜欢。...:只缓存原始图片(原来全分辨率图像,即不缓存转换后图片) // DiskCacheStrategy.RESULT:(默认)只缓存转换后图片(即最终图像:降低分辨率后 / 或者转换后 ,不缓存原始图片...---- 步骤6:从网络获取 图片资源 在 Glide两级缓存机制里都没有图片缓存时,只能去源头(如网络)去加载图片 但从网络加载图片前,需要先获取该图片网络资源 此处先忽略该过程 若有兴趣同学请看文章...额外注意:为什么Glide缓存功能不起作用? a....解决方案 具体请看文章:[Android 图片加载那些事:为什么Glide 缓存没有起作用?]

    2.1K21

    Android图片加载框架最全解析(四),玩转Glide回调与监听

    大家好,今天我们继续学习Glide。 在上一篇文章当中,带着大家一起深入探究Glide缓存机制,我们不光掌握Glide缓存使用方法,还通过源码分析对缓存工作原理进行了了解。...preload()方法 Glide加载图片虽说非常智能,它会自动判断该图片是否已经有缓存,如果有的话就直接从缓存中读取,没有的话再从网络去下载。...接下来我们调用FutureTargetget()方法就可以去获取下载图片文件,如果此时图片没有下载完,那么get()方法就会阻塞住,一直等到图片下载完成才会有值返回。...现在重新运行一下代码,效果如下图所示。 ? 可以看到,图片加载和显示是非常快,因为Glide直接使用是刚才下载缓存文件。...然后onResourceReady()方法我们就非常熟悉图片下载完成之后就会回调到这里,在这个方法中只是打印一下下载图片文件路径。

    2.7K60

    ,面试官突然问我:Glide是干啥对着那Glide新版本就是一顿暴讲

    接下来将通过以下几个问题来引伸分析Glide内部逻辑,尽量做到 由使用到原理,从架构到逻辑,深入浅出。 Glide是干啥为什么GlideGlide怎么用? Glide包含哪些模块?...Glide提供易用API,高性能、可扩展图片解码管道(decode pipeline),以及自动资源池技术。 2. 那你为什么要用Glide?...风骚缓存策略 支持按控件大小缓存对应大小图片,且默认图片格式为RGB_565,相对占用空间更小。速度也因此更快。 嗯~~~ 就看这几个,你说你要不要选Glide..... 3....参数封装(获得请求参数,配置加载图属性) 网络请求(下载图片缓存逻辑(资源重用) 加解码(处理图片) 数据加载(判断加载方式/请求网络/IO读取/内存读取) 线程池/线程队列(或者叫任务队列,用于处理每次加载任务...最后通过requestTracker循环找到对应Request对象,然后调用对应处理方法从而达到了根据生命周期动态控制图片加载目的。 好了,就不多赘述还得抓紧赶路,争取一气呵成。

    2.9K21

    Android图片加载开源库深度推荐,安利Fresco1、Universal-Image-Loader2、Picasso3、Glide4、Fresco

    从事Android开发猿们,一定都经历过对加载图片这件事报以这个表情( ‵o′)凸,每次都被IOS同事调侃,从最先用Volley下载后LurCache缓存,到后面开源库Universal-Image-Loader...glide-transformations 处理各种图片显示效果,先看下面的图片为什么着重推荐这个,因为如果是用是圆形ImageView或者特殊裁剪什么,那么很可能会有问题。 什么问题?...聪明你一定知道,因为要说Fresco,那么为什么不用Glide呢?...挺好啊~这·····因为某次要把通过图片URL拿本地缓存时候,居然找不到同步获取方法(ノಠ益ಠ)ノ彡┻━┻,除了异步回调之外,居然找不到····而且听说Fresco对GIF和webp支持更好...方式,分段加载显示超长图,拒绝OOM,而且,而且,而且支持支持支持:双击放大,单击返回,手动放大等,目前只能加载本地,不怕不怕,可以下下来用缓存啊: 逻辑是,当图片长度大于屏幕2倍是就使用这个加载

    1.4K20

    Android图片加载框架最全解析(六),探究Glide自定义模块功能

    显然我们已经用惯了Glide.with(context).load(url).into(imageView)这样一行简洁Glide图片加载语句,但是我们好像从来没有注意过Glide这个类本身实例。...这是一种非常安全做法,但同时这种做法也造成了一些不便,因为私有目录下即使是开发者自己也是无法查看,如果想要去验证一下图片到底有没有成功缓存下来,这就有点不太好办了。...OK,现在图片已经加载出现,那么我们去找一找它缓存吧。...,那为什么只需要重新注册一个GlideUrl类型组件,而不需要去重新注册一个String类型组件呢?...Glide内存缓存和硬盘缓存都禁用掉了,不然的话,Glide可能会直接读取刚才缓存图片,而不会再重新发起网终请求。

    1.9K81

    面试官:关于Glide常问几个问题你掌握多少?答对了直接绿卡!

    没有,则去SoftRefrence中找,有则取,同时将图片放回Lru中。 没有的话去文件系统找,有则取,同时将图片添加到Lru中。 没有就走下载图片逻辑,保存到文件系统中,并放到Lru中。...下面我们看一下Glide读取顺序,这里有一点不同,Glide4.8版本,跟之前版本写入顺序稍有不同。...这样也就实现正在使用中图片使用弱引用来进行缓存,不在使用中图片使用LruCache来进行缓存功能。...接下来就是Glide磁盘缓存,磁盘缓存简单来说就是根据Key去DiskCache中取缓存,有兴趣可以自行看一下源码。 面试官2:为什么选择Glide不选择其他图片加载框架?...简单来说就是当需要加载一个bitmap时候,会根据图片参数去池子里找到一个合适bitmap,如果没有重新创建。BitMapPool同样是根据Lru算法来工作。从而提高性能。

    48300

    Android图片加载框架最全解析(一),Glide基本用法

    总之,没有最好框架,只有最适合自己框架。经过多方面对比之后,还是决定选择Glide来进行研究,并且这也是Google官方推荐图片加载框架。...说实话,关于Glide文章已经筹备好久,去年这个时候本来就打算要写了,但是一直都没有动笔。...那么我们有没有办法再优化一下用户体验呢?当然可以,Glide提供各种各样非常丰富API支持,其中就包括占位图功能。...因为Glide有非常强大缓存机制,我们刚才加载那张必应美图时候Glide自动就已经将它缓存下来了,下次加载时候将会直接从缓存中读取,不会再去网络下载,因而加载速度非常快,所以占位图可能根本来不及显示...关于Glide缓存方面的内容我们将会在后面的文章进行详细讲解,这里只是为了测试占位图功能而加一个额外配置,暂时你只需要知道禁用缓存必须这么写就可以。 现在重新运行一下代码,效果如下图所示: ?

    1.7K110

    Glide-图片加载框架全解(一)- 基本用法

    那么我们有没有办法再优化一下用户体验呢?当然可以,Glide提供各种各样非常丰富API支持,其中就包括占位图功能。...因为Glide有非常强大缓存机制,我们刚才加载那张必应美图时候Glide自动就已经将它缓存下来了,下次加载时候将会直接从缓存中读取,不会再去网络下载,因而加载速度非常快,所以占位图可能根本来不及显示...关于Glide缓存方面的内容我们将会在后面的文章进行详细讲解,这里只是为了测试占位图功能而加一个额外配置,暂时你只需要知道禁用缓存必须这么写就可以。...现在你可以将图片url地址修改成一个不存在图片地址,或者干脆直接将手机网络给关了,然后重新运行程序,效果如下图所示: 这样我们就把Glide提供占位图功能都掌握。...当然,Glide也并没有使用什么神奇魔法,它内部实现原理其实就是上面那篇文章当中介绍技术,因此掌握最基本实现原理,你也可以自己实现一套这样图片压缩机制。

    1K10

    【Android从零单排系列九】《Android视图控件——ImageView》

    ImageLoader:旨在为图像加载,缓存和显示提供强大,灵活可定制工具。...他提供大量配置选项和良好控制图像加载和缓存过程。...Picasso:和Square网络库一起能发挥最大作用,因为Picasso可以选择将网络请求缓存部分交给okhttp实现 Glide:模仿PicassoAPI,而且在他基础上加了很多扩展(...这会使得APP更加流畅,减少因图片内存占用而引发OOM。为什么说5.0以下呢?因为在5.0系统以后系统默认就是存储在Ashmem区。...2.图片框架ImageLoader,Picasso,Fresco,Glide对比 ImageLoader 比较老框架,稳定,加载速度适中,缺点在于不支持GIF图片加载,使用稍微繁琐,并且缓存机制没有

    1.2K30

    高性能图片优化方案

    file,io,id,网络等各种图片资源读取缓存:为了减少计算,通常都会做缓存;同样请求,从缓存中取图片(Bitmap)即可;查找文件/下载文件:如果是本地文件,直接解码即可;如果是网络图片,需要先下载...觉得看博客要对博主表示怀疑,论证别人写是否正确。说出结论:上面2.1这种说法也对,但是不全对,没有说明场景,同时也忽略一个影响项:Density。接下来看看源代码。...这样优先查找xxhdpi如果xxhdpi里没有查找图片,如果没有会往上找,遵循“先高再低”原则。如果xhdpi里有这个图片会使用xhdpi里图片,这时候发现会比在xhdpi里图片放大。...先加载到内存,再进行操作吗,可以如果先加载到内存,好像也不太对,这样只接占用了 19.6M + 0.2M 2份内存,而我们想要是,在原图不加载到内存中,只接将缩放后图片加载到内存中,可以实现吗?...另外,我们应用可能会被类似打电话等行为而暂停并退到后台,因为后台应用可能会被杀死,那么内存缓存就会被销毁,里面的 Bitmap 也就不存在。一旦用户恢复应用状态,那么应用就需要重新处理那些图片

    84230
    领券