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

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

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

Вам нужно добавить зависимость okhttp3-интеграции к вашему графическому файлу приложения

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

Измените официальный интеграционный модуль интеграции ссылок

После этого вы можете добавить GlideModule с okhttp …

Так как 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) 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' }