glide库想必大家都非常喜欢使用,无论是加载gif或者bitmap图,都如丝般顺滑!!! 但是,但是,就在这个但是上,你是否遇到过glide加载图片失败的情况呢??
问题追踪过程:
1.url地址有问题? 抓到url放到浏览器,完全能正常展示
2.glide有bug? 但是别的手机都是ok,都能正常展示呢? 这怎么解释?
3.仔细查看log日志记录,你能发现一行这样的错误日志 , Android ua 0x5**** can not .....芸芸 ,意思请求中的ua有问题
顺藤摸瓜,debug断点跟踪发现,的确,我的手机ua有问题,有什么问题呢? 带有中文!!有中文!!!有中文!! Glide开源库对有中文ua支持不了!!
怎么办呢?? google一番,发现两种解决方案:
1.
方法一是利用GlideModule , 网上代码很多,不再赘述,基本搜索: Glide 自定义header头,就能搜索很多
2.
方法二:
.addHeader("User-Agent", MiscUtil.urlEncode(DeviceUtils.getUserAgent())).build());BitmapRequestBuilder builder = Glide.with(YueduApplication.instance()) .load(glideUrl) .asBitmap() .placeholder(placeHolderCover) .error(placeHolderCover) .diskCacheStrategy(type); 轻松愉快解决!!!GlideUrl glideUrl = new GlideUrl(revert(realUrl), new LazyHeaders.Builder()
总结:目前主流的手机设备厂商ua基本不会出现中文的情况,即使出现了,我们在okhttp请求中也会对ua进行urlencode,但是glide没考虑到这种情况,还好良好的扩展性能支持设置!!!