Glide使用小结

Glide预加载

  1. glide# preload()缓存
    如何采用DiskCacheStrategy.RESOURCE会导致在真正使用的时候缓存不会起作用,白白浪费流量(无特殊要求默认策略即可)
    使用 asBitmap(),asDrawable() 效果一致。调用时都是用这种DATA_DISK_CACHE缓存类型
    且asDrawable() 也会生成一个BitmapDrawable(包裹着一个Bitmap对象)
默认的策略是DiskCacheStrategy.AUTOMATIC 
DiskCacheStrategy有五个常量:

Glide里的缓存
默认情况下,Glide 会在开始一个新的图片请求之前检查以下多级的缓存:

活动资源 (Active Resources) - 现在是否有另一个 View 正在展示这张图片?
内存缓存 (Memory cache) - 该图片是否最近被加载过并仍存在于内存中?
资源类型(Resource) - 该图片是否之前曾被解码、转换并写入过磁盘缓存?
数据来源 (Data) - 构建这个图片的资源是否之前曾被写入过文件缓存?
前两步检查图片是否在内存中,如果是则直接返回图片。后两步则检查图片是否在磁盘上,以便快速但异步地返回图片。

如果四个步骤都未能找到图片,则Glide会返回到原始资源以取回数据(原始文件,Uri, Url等)。

磁盘缓存策略(Disk Cache Strategy)
DiskCacheStrategy 可被 diskCacheStrategy 方法应用到每一个单独的请求。 
目前支持的策略允许你阻止加载过程使用或写入磁盘缓存,选择性地仅缓存无修改的原生数据,或仅缓存变换过的缩略图,或是兼而有之。
默认的策略叫做 AUTOMATIC ,它会尝试对本地和远程图片使用最佳的策略。当你加载远程数据(比如,从URL下载)时,AUTOMATIC
策略仅会存储未被你的加载过程修改过(比如,变换,裁剪–译者注)的原始数据,因为下载远程数据相比调整磁盘上已经存在的数据要昂
贵得多。对于本地数据,AUTOMATIC 策略则会仅存储变换过的缩略图,因为即使你需要再次生成另一个尺寸或类型的图片,取回原始数
据也很容易。
  1. Glide.with(imageView.load(banner.getCoverUrl()).apply(RequestOptions.placeholderOf(new ColorDrawable(ContextCompat.getColor(mContext, R.color.otherColorSecondary)))) .into(imageView);

使用中一个小问题,view不需要加载到界面显示时,不设置listener(new RequestListener(){})图片不会被加载

glide 官网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 是的,Glide 的 `downloadOnly()` 方法已经被标记为过时。如果要下载图片而不显示它,可以使用 `download()` 方法。`download()` 方法与 `downloadOnly()` 方法的区别在于,前者会在下载完成后将图片保存到磁盘缓存中,而后者不会。 下面是使用 Glide 下载图片的示例代码: ```java Glide.with(context) .load(imageUrl) .download(new SimpleTarget<File>() { @Override public void onResourceReady(File resource, GlideAnimation<? super File> glideAnimation) { // 下载完成,resource 为保存在磁盘缓存中的文件 } }); ``` 在这个示例中,我们通过 `load()` 方法加载图片,并通过 `download()` 方法下载并保存图片。`download()` 方法的参数是一个 `SimpleTarget<File>` 对象,用于在下载完成后回调,`onResourceReady()` 方法中的 `resource` 参数即为保存在磁盘缓存中的文件。 需要注意的是,如果要使用 `download()` 方法下载图片,必须在 AndroidManifest.xml 文件中声明写入外部存储的权限: ```xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> ``` ### 回答2: Glide的downloadOnly()方法是用来在后台下载图片,并且不会将图片直接加载到ImageView上。然而,由于一些更新和改进,该方法已经被标记为过时。在最新版本的Glide中,使用downloadOnly()方法并不推荐,应该尽量避免使用它。 过时的原因可能是因为下载图片时,Glide提供了更多的选择和更好的性能。例如,Glide已经引入了RequestOptions类,它提供了更多的选项去控制图片下载的行为和结果。可以通过在RequestOptions中设置diskCacheStrategy()方法来指定磁盘缓存策略,这样可以更好地管理已下载的图片缓存。 另外,Glide中的新方法也提供了更好的错误处理机制。过时的downloadOnly()方法无法提供可靠的错误处理,而新的方法可以更好地处理加载过程中的异常和错误情况。 因此,建议使用新的方法来替代过时的downloadOnly()。例如,可以使用Glide的asFile()方法来直接下载图片文件,并使用diskCacheStrategy()来设置缓存策略。或者也可以使用Glide的preload()方法来预加载图片,为后续的加载操作做准备。 总之,尽量避免使用过时的downloadOnly()方法,而是使用新的方法来更好地管理和处理图片下载过程中的各种情况。 ### 回答3: Glide的downloadOnly方法是用于仅下载图片而不显示的方法,它已经被标记为过时。原因是在实际使用中发现,仅下载图片而不显示可能会导致一些问题。 首先,通过downloadOnly方法下载的图片将不会被缓存。这意味着每次你需要显示这个图片时,都需要重新下载。这不仅会消耗网络流量,还会延长图片加载的时间,并且在网络不稳定的情况下,可能导致图片无法加载成功。 其次,downloadOnly方法没有提供任何回调接口,无法处理下载过程中的异常情况。如果在下载过程中出现网络错误或其他问题,我们将无法得知并进行相应处理。 另外,Glide还提供了一种更加灵活的方式来实现图片下载和加载的功能,即使用into方法。通过into方法,我们可以指定一个用于显示图片的目标View,并在加载完成后得到相应的回调,从而可以更好地处理加载过程中的各种情况。 总结来说,Glide的downloadOnly方法被标记为过时是因为它无法处理缓存以及异常情况,并且有更加灵活的替代方案可供选择。因此,在实际使用中,建议使用更为有效和可靠的方式来进行图片下载和加载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值