序文
OkHttp は現在、Google によって公式に推奨されているネットワーク リクエスト フレームワークです。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
このライブラリは統合する必要があります -
カスタム クラスの保存場所は、第 2 レベルのパッケージではなく、プログラム パッケージ名の第 1 レベルのディレクトリの下にある必要があり、カスタム AppGlideModule には自由に名前を付けることができることに注意してください。
-
プロセッサを導入するときは、Java プロジェクトでそれを使用する必要があり
annotationProcessor
、kotlin プロジェクトでもそれを使用する必要があることに注意してくださいkapt
。そうしないと、カスタム クラスの実装クラスがコードを自動的に生成できない可能性があります。