前言
OkHttp现在是谷歌官方推荐使用的网络请求框架,Glide配置使用OkHttp网络请求可以让图片加载时的网络请求也能使用OkHttp的灵活配置
1.引入库
以下为必须引入的库,添加之后sync project
等待库下载完成
//Glide库
implementation 'com.github.bumptech.glide:glide:4.13.0'
//java版本引入
annotationProcessor 'com.github.bumptech.glide:compiler:4.13.0'
//kotlin项目先引入plugin,然后是用kapt引入,切记,不然可能导致无法生成自定义GlideModule的实现类
plugins {
id 'kotlin-kapt'
}
kapt 'com.github.bumptech.glide:compiler:4.13.0'
// Glide集成OkHttp时需要使用的库,库已经将需要适配Okhhtp的大部分代码封装
implementation "com.github.bumptech.glide:okhttp3-integration:4.13.0"
2.编写代码
- 自定义类继承
AppGlideModule
- 给自定义类添加注解
@GlideModule
- 添加代码实现如下:
import com.bumptech.glide.Glide
import com.bumptech.glide.Registry
import com.bumptech.glide.annotation.GlideModule
import com.bumptech.glide.integration.okhttp3.OkHttpUrlLoader
import com.bumptech.glide.module.AppGlideModule
import com.bumptech.glide.load.model.GlideUrl
@GlideModule
public class OkHttpModule: AppGlideModule() {
override fun registerComponents(context: Context, glide: Glide, registry: Registry) {
val client: OkHttpClient = OkHttpClient.Builder().build()
registry.replace(GlideUrl::class.java, InputStream::class.java, OkHttpUrlLoader.Factory(client))
}
}
Make Project
等待注解处理器自动生成代码,自动生成的代码在build/generated/source/kapt/debug/com/bumptech/glide/GeneratedAppGlideModuleImpl.java
- 检查上述文件夹对应的类是否生成,如果没有生成代表集成哪里出了问题。没有生成类的情况下配置的OkHttp是不生效的,切记。
3.可能遇到的问题
为什么我的类没有生成,配置无作用?
-
注解是否添加,注解是必须的,注解处理器需要扫描这个注解生成模板代码
-
implementation "com.github.bumptech.glide:okhttp3-integration:4.13.0
此库必须集成 -
注意自定类的存放位置一定是在你程序包名一级目录下面,不能在任何二级包里面,自定义AppGlideModule命名随意
-
记住引入处理器的时候,java项目要用
annotationProcessor
,kotlin项目要用kapt
,不然自定义类的实现类可能没法自动生成代码