Как установить 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...