Glide缓存详解

本文讲述了Glide在Android开发中的应用,重点解析了其简单易用的API、自动缓存机制以及三级缓存(内存、磁盘和网络)的工作原理,帮助开发者解决实际问题,提高图片加载效率和用户体验。
摘要由CSDN通过智能技术生成

今天小赵带给为jym走进Glide的世界,众所周知呢,Glide是是一个图片加载库,是目前来说呢在Android领域较为成熟的一个图片加载框架,也是Google官方比较推荐的图片处理框架,主要支持网络图片、drawable资源、二进制流、本地图片显示,它具有高效的图片加载和缓存机制,可帮助您在应用中快速加载图片,并提供了许多有用的功能和扩展选项。

为啥会说到Glide呢,起因是小赵在昨天使用的时候出现问题了,懵逼的以为是我的代码出现了bug,给我一段好找,然并卵,在仔细的回想一下问题的起因,才找到了问题的原因,给各位复现一下,在获取到后端反馈的url路径,小赵放入Glide进行加载,这里咱们叫做图1,然后后端出现问题了,立马更改,改完之后呢,返回的路径没变,这个路径的图咱们称之为图2,图1和图2的路径呢是一样的,但是咱们图片换了,小赵在看效果的时候呢,看到的还是图1这张图,拿出路径在浏览器上看了一下,看到的是图2,为什么会出现这样的问题,在我复现问题的时候想到了Glide的缓存机制,导致出现了这样的问题,清除了缓存之后,就可以看到新的图片了。

今天这篇文章呢,一是为各位讲解一下Glide的一些之后,二呢也是小赵自己在给自己复习一下,避免以后出现这样的问题。那么下面咱们进入正题:

  1. 简单易用:Glide 的 API 设计简洁明了,使用起来非常方便。您只需几行代码即可加载和显示图片。
  2. 自动缓存机制:Glide 自动进行图片的内存缓存和磁盘缓存,确保再次加载同一张图片时能够快速从缓存中获取,减少网络请求次数和提升用户体验。
  3. 高效的图片加载:Glide 采用了各种图片解码和缩放技术,可以有效地处理大型图片,并在加载时自动处理图片的大小、采样率和色彩空间,以避免内存溢出和加载过程中的卡顿。
  4. 灵活的图片变换:Glide 提供了多种图片变换选项,您可以轻松地对加载的图片进行裁剪、缩放、旋转、模糊等操作,以满足不同的展示需求。
  5. 动态图片支持:Glide 支持加载和展示动态图片(如 GIF),您可以轻松地在应用中显示动态的图片内容。
  6. 资源复用:Glide 具有智能的资源复用机制,可以避免因为快速滑动产生的图片错位等问题,保证图片加载正确显示。
  7. 丰富的 API:Glide 提供了丰富的 API 和扩展选项,可以根据不同的需求自定义图片加载、缓存、显示的行为,如设置占位图、错误图、加载进度监听等。
  8. 与生命周期集成:Glide 可以与 Android 的生命周期进行集成,确保在页面生命周期变化时自动停止图片加载,避免内存泄漏和资源浪费。

Glide的缓存机制:

这个怎么说呢,存在一些争议,有人说他三级缓存,有人说他二级缓存,咱们就以三级缓存来说:

  1. 内存缓存:Glide 首先尝试从内存缓存中加载图片。内存缓存位于应用的内存中,它使用 LRU(最近最少使用)算法来管理缓存项。当您首次加载一张图片时,Glide 会将其解码并将其保留在内存缓存中。当需要再次加载相同的图片时,Glide 将直接从内存缓存中获取图片,以提高加载速度。内存缓存的大小通常较小,适合存储频繁使用的图片。
  2. 磁盘缓存:如果图片未在内存缓存中找到,则 Glide 会尝试从磁盘缓存中加载图片。磁盘缓存是将图片保存到设备存储的一部分,典型的是应用的缓存目录。它持久保存已解码的图片,以便在应用重新启动时仍然可用。磁盘缓存通过文件路径来索引图片,在加载图片时可以快速获取。磁盘缓存通常比内存缓存更大,适合存储不经常使用的图片。
  3. 网络加载:如果图片既不在内存缓存中,也不在磁盘缓存中,那么 Glide 将尝试从网络上加载图片。它会发起网络请求来获取图片,并将其解码后存储在内存和磁盘缓存中,以便以后使用。网络加载是最耗时的操作,因此 Glide 会尽量利用内存和磁盘缓存,避免重复的网络请求。

咱们看过上面的三级缓存应该明白了,Glide是根据上面的三个缓存依次下来的,那么我之前遇到的问题就是出现在第一次通过网络加载之后图片保存在了内存当中,在第二次加载的时候呢,Glide调用内存缓存找到了咱们的图片直接进行加载,这就是导致出现问题的原因。了解了Glide的缓存机制,咱们以后呢在使用Glide就会更加得心应手了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值