Glide升级、Glide适配Androidx、Glide升级到4.11.0

Glide适配Androidx

背景

项目中使用的Glide版本是3.7.0。因为项目整体要迁移到Androidx,所以开始了一场Glide的大版本升级旅程。

官方文档

https://muyangmin.github.io/glide-docs-cn/doc/download-setup.html
按照官方步骤大体可行,但总是会遇到一些意外情况,比如对于Androidx的兼容问题。

兼容Androidx

因为Glide.4.8.0系列的包并没有兼容Androidx,所以在项目迁移到Androidx时需要继续升级Glide版本。
1、直接使用Glide最新版本4.11.0,此版本已经适配Androidx。
2、需要引入两个关联的Androidx库:
androidx.vectordrawable:vectordrawable-animated:1.1.0
androidx.exifinterface:exifinterface:1.2.0

libs依赖

有些情况可能我们需要下载库包,而不是maven依赖
1、如下地址下载Glide.4.11.0最新包
https://mvnrepository.com/artifact/com.github.bumptech.glide/glide
2、需要引入两个关联的Androidx库:
androidx.vectordrawable:vectordrawable-animated:1.1.0
androidx.exifinterface:exifinterface:1.2.0
3、jar包会导致关联包无法引入,需要下载关联jar
Glide GIF Decoder Library:
https://mvnrepository.com/artifact/com.github.bumptech.glide/gifdecoder
Glide Disk LRU Cache Library:
https://mvnrepository.com/artifact/com.github.bumptech.glide/disklrucache
4、我们的项目引入如上两个包已经编译成功。但是不排除其他项目有更多依赖,如果遇到 NoClassNotFound的情况,可以参考如下地址寻找关联包:
https://mvnrepository.com/artifact/com.github.bumptech.glide

一些消失的方法

需要借用apply和RequestOptions:
Glide.with(context).load(R.drawable.ic_transport_theme_art)
.apply(new RequestOptions().skipMemoryCache(true).diskCacheStrategy(DiskCacheStrategy.NONE))
.into(mThemeCardBgTarget);

AppGlideModule

这个东西利用注解帮你桥接了老方法,可以继续使用升级后消失的方法,如下:
不过需要使用GlideApp
GlideApp.with(context).load(R.drawable.ic_transport_theme_art)
.skipMemoryCache(true).diskCacheStrategy(DiskCacheStrategy.NONE).into(mThemeCardBgTarget);

神坑!!!! java.lang.IllegalStateException: You cannot call Glide.get() in registerComponents(), use the provided Glide instance instead

Glide升级后,使用了单例模式,所以并发使用Glide.with会出现如上报错。
解决办法:
可以在并发使用Glide.with的地方加锁;或者继承Application,在应用刚起动的最开始,做一次无用的Glide.with初始化实例。

发布了9 篇原创文章 · 获赞 4 · 访问量 255

猜你喜欢

转载自blog.csdn.net/archie_7/article/details/105404649