I am using Glide to load images, the issue I'm facing is that when i run app on slow internet connection I'm getting SocketTimeOutException
. So to solve this issue i want to use a custom OkHttpClient
so that I can change the timeout of HttpClient this is the code i have.
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); } }
but OkHttpUrlLoader
is not there any more in Glide API. So i was wondering how can set the OkHttpClient for Glide
since glide 4.0.0 it has changed a little bit.
first of all GlideModule
is deprecated and you need to use AppGlideModule
if you are developing an application and LibraryGlideModule
for library development. you need to use @GlideModule
above your custom AppGlideModule
class.
secondly there is no register()
method in Glide
object any more.
and finally okhttp3 will use a builder.
it'll be like below for apps:
@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); } }
you'll need to have all these dependency with the exact versions in your app gradle file:
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' }
To use OkHttpUrlLoader you need to add dependencies as the @darwin said but there is dependency issue https://github.com/bumptech/glide/issues/941. So you will be adding this in your dependencies
compile ('com.github.bumptech.glide:okhttp3-integration:1.4.0'){ exclude group: 'glide-parent' }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With