glide替换okhttp以及更改连接超时时间(TIME_OUT)

本文详细介绍了在使用Glide 4.x时如何替换默认的okhttp并自定义连接超时时间。在替换okhttp过程中遇到图片加载失败的问题,原因是WiFi代理证书导致的连接失败。为解决超时时间问题,尝试修改OkHttpUrlLoader的内部OkHttpClient,但发现构造函数无法直接传入自定义的超时设置。通过调试发现,OkHttpGlideModule和OkHttpLibraryGlideModule两个类中,只有OkHttpGlideModule生效,原因是LibraryGlideModules会被忽略。解决办法是创建一个继承自AppGlideModule的MyOkHttpGlideModule,并传入带有定制超时时间的OkHttpClient。
摘要由CSDN通过智能技术生成

Glide替换okhttp,更改超时时间,看似简单,具体写的过程中坑还是真多,特记录一下,也帮助需要的人。本文基于Glide 4.x。

首先,替换okhttp,官方给了一个及其简单的方式。

implementation "com.github.bumptech.glide:okhttp3-integration:4.6.1"

这个地方是有一个坑的。我实际做的时候,发现加上这一句以后,图片死活加载不出来了 。以为替换的方式有问题,查了大量资料和源码都没有结果。后来分析log发现log上写连接失败。我换了几张网络图片都不行,而用普通的连接方式是可以加载出图片的。于是想到了是wifi代理证书问题。换了个wifi果然好了。。

OK,okhttp替换是很简单(如果你的wifi没有问题的话。。),下面来看定制TIME_OUT。去他引用的这个integration工程里的OkHttpUrlLoader里看,有internalClient这个OkHttpClinet,依旧是写死的,不能定制其超时时间。OkHttpUrlLoader的Factory有两个构造函数,自然就想到了能不能调用第二个构造函数,传进一个定制了超时时间的OkHttpClient去。但是查看这个Factory的调用树,发现它是被OkHttpGlideModule(已经过时)和OkHttpLibraryGlideModule这两个类调用的,这两个类都是组件类,在Glide初始化的时候会执行registerComponents替换掉原来的GlideUrl。区别是一个是老的形式,必须在manifest里定义meta-data,另一个是新的形式,用注解的方式替

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值