GlideのバックエンドをOkHttp3にしてカスタムインスタンスを与える

github.com

GlideのバックエンドをOkHttp3にするには、 okhttp3-integration を使います。

dependencies {
    compile 'com.github.bumptech.glide:okhttp3-integration:1.4.0@aar'
}

これだけで、GlideのバックエンドHTTPクライアントがOkHttp3になります。

しかし、カスタムOkHttp3インスタンスを与えるにはさらに一工夫必要で、具体的には、アプリケーション用のGlideModuleを実装してAndroidManifestで宣言する必要があります。

まず、GlideModuleを実装したクラスを定義します。

public class OkHttp3GlideModule implements GlideModule {

    OkHttpClient client = ...; // 何らかの方法でOkHttpClientのインスタンスを得る

    @Override
    public void applyOptions(Context context, GlideBuilder builder) {
    }

    @Override
    public void registerComponents(Context context, Glide glide) {
        Log.d("OkHttp3GlideModule", "registerComponents");

        // glideに登録する。
        // OkHttpUrlLoaderはokhttp3-integrationに定義されたクラス
        glide.register(GlideUrl.class, InputStream.class,
                new OkHttpUrlLoader.Factory(client));
    }
}

これをAndroidManifestで宣言します。

<application>
    <meta-data
        android:name="com.example.app.OkHttp3GlideModule"
        android:value="GlideModule"
        />
</application>

これでGlideでカスタムOkHttp3インスタンスが使われるようになります。

See Also