Как установить OkHttpClient для скольжения
Я использую Glide для загрузки изображений, проблема, с которой я сталкиваюсь, заключается в том, что при запуске приложения при медленном подключении к Интернету я получаю SocketTimeOutException
. Поэтому для решения этой проблемы я хочу использовать пользовательский 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
Ответы
Ответ 1
Чтобы использовать OkHttpUrlLoader, вам нужно добавить зависимости, как сказал @darwin, но есть проблема с зависимостями https://github.com/bumptech/glide/issues/941. Так что вы будете добавлять это в свои зависимости
compile ('com.github.bumptech.glide:okhttp3-integration:1.4.0'){
exclude group: 'glide-parent'
}
Ответ 2
, так как glide 4.0.0 немного изменился.
прежде всего GlideModule
устарел, и вам нужно использовать AppGlideModule
, если вы разрабатываете приложение и LibraryGlideModule
для разработки библиотеки. вам нужно использовать @GlideModule
над вашим пользовательским классом AppGlideModule
.
Во-вторых, в Glide
не существует метода register()
.
и, наконец, 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'
}
Ответ 3
Вам нужно добавить зависимость okhttp3-интеграции к вашему графическому файлу приложения
dependencies {
compile 'com.github.bumptech.glide:okhttp3-integration:[email protected]'
//compile 'com.squareup.okhttp3:okhttp:3.2.0'}
Отправьте официальную ссылку модуль интеграции глистов
После этого вы можете добавить GlideModule с okhttp...
Ответ 4
Добавить или обновить версию okhttp3-integration:4.4.0
implementation ('com.github.bumptech.glide:okhttp3-integration:4.4.0'){
exclude group: 'glide-parent'
}