Как установить OkHttpClient для glide

Я использую Glide для загрузки изображений, проблема, с которой я сталкиваюсь, заключается в том, что при запуске приложения на медленном подключении к интернету я получаю SocketTimeOutException. Поэтому для решения этой проблемы я хочу использовать custom OkHttpClient Так что я могу изменить тайм-аут HttpClient это код, который у меня есть.

public class MyGlideModule  implements GlideModule {
    @Override
    public void applyOptions(Context context, GlideBuilder builder) {

    }

    @Override
    public void registerComponents(Context context, Glide glide) {
        OkHttpClient client = new OkHttpClient();
        client.setConnectTimeout(15, TimeUnit.SECONDS);
        client.setReadTimeout(15,TimeUnit.SECONDS);
        OkHttpUrlLoader.Factory factory = new OkHttpUrlLoader.Factory(client);
        glide.register(GlideUrl.class, InputStream.class, factory);
    }
}

но OkHttpUrlLoader больше нет в Glide API. Поэтому мне было интересно, Как установить OkHttpClient для Glide

3 ответов


чтобы использовать OkHttpUrlLoader, вам нужно добавить зависимости, как сказал @darwin, но есть проблема зависимости https://github.com/bumptech/glide/issues/941. Таким образом, вы добавите это в свои зависимости

 compile ('com.github.bumptech.glide:okhttp3-integration:1.4.0'){
        exclude group: 'glide-parent'
    }

С glide 4.0.0 он немного изменился.

в первую очередь GlideModule устарел, и вам нужно использовать AppGlideModule Если вы разрабатываете приложение, и LibraryGlideModule для развития библиотеки. вам нужно использовать @GlideModule выше пользовательского AppGlideModule класса.

во-вторых нет register() метод Glide объект больше.

и, наконец, okhttp3 будет использовать строитель.

это будет как ниже приложения:

    @GlideModule
    private class CustomGlideModule extends AppGlideModule {

       @Override
       public void registerComponents(Context context, Glide glide, Registry registry) {
           OkHttpClient client = new OkHttpClient.Builder()
                   .readTimeout(15, TimeUnit.SECONDS)
                   .connectTimeout(15, TimeUnit.SECONDS)
                   .build();

       OkHttpUrlLoader.Factory factory = new OkHttpUrlLoader.Factory(client);

           glide.getRegistry().replace(GlideUrl.class, InputStream.class, factory);
       }
   }

вам нужно будет иметь все эти зависимости с точными версиями в вашем файле gradle приложения:

 compile "com.squareup.okhttp3:okhttp:3.8.1"
    compile 'com.github.bumptech.glide:glide:4.0.0'
    compile ('com.github.bumptech.glide:okhttp3-integration:4.0.0'){
        exclude group: 'glide-parent'
    }

вам нужно добавить зависимость okhttp3-integration в файл gradile приложения

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

Reffer официальная ссылка модуль интеграции скольжения

после этого u может добавить GlideModule с okhttp...