Glide 4.11.0版本在访问失败的情况下,会二次重试

1.  背景

项目使用Glide作为图片加载控件,自定义ModelLoader

2. 问题

在自定义DataFetcher中,发现loadData在失败时,再自动调用这个方法,因此被加载了2次;

原先是在这边添加失败重试的,现在是导致多次调用,重试多次。

3. 排查

3.1在自定义ModelLoader添加log

 发现这个方法被调用2次,即加载的任务被加载到队列有2次。

3.2 对比图片加载成功和失败

  在成功加载时,在自定义DataFetcher的方法loadData只被调用一次,而在网络访问失败时,发现loadData有2次调用,第二次调用是紧跟着第一次失败后调用;

  自定义DataFetcher的构造方法也被调用2次,说明有2次new出来的对象;方法cleanup也被调用了2次

3.3 Glide内部流程分析

里面有个8个loader,其中HttpUriLoader和UrlUriLoader都进入自定义的modelLoader.buildLoadData。

猜测是注册时替换系统预先注册的这个2个modelloader,然后在失败的时候:

fetchers有2个,在失败时,在fetchers的数组中,会进入第二个loader去loadData去。

解决:

使用glide最新的版本 4.12.0版本不会出现这个问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值