glide image loading timeout increase
After searching a lot finally got an answer, if you are using volley:
public class CustomGlide implements GlideModule { @Override public void applyOptions(Context context, GlideBuilder builder) { } @Override public void registerComponents(Context context, Glide glide) { RequestQueue queue = new RequestQueue( // params hardcoded from Volley.newRequestQueue() new DiskBasedCache(new File(context.getCacheDir(), "volley")), new BasicNetwork(new HurlStack())) { @Override public <T> Request<T> add(Request<T> request) { request.setRetryPolicy(new DefaultRetryPolicy(10000, 1, 1)); return super.add(request); } }; queue.start(); glide.register(GlideUrl.class, InputStream.class, new VolleyUrlLoader.Factory(queue)); }}
Change the DefaultRetryPolicy
according to your need
And in the manifest:
<meta-data android:name="<package-name>.CustomGlide" android:value="GlideModule" />
Below is the solution for: Glide 4.3.1
& OkHttp 3.9.1
, a bit different than before (it's no more OkHttpGlideModule
but AppGlideModule
).
build.gradle
implementation 'com.squareup.okhttp3:okhttp:3.9.1'implementation 'com.github.bumptech.glide:glide:4.3.1'annotationProcessor 'com.github.bumptech.glide:compiler:4.3.1'implementation 'com.github.bumptech.glide:okhttp3-integration:4.3.1'
CustomGlideModule
@GlideModulepublic class CustomGlideModule extends AppGlideModule { @Override public void registerComponents(Context context, Glide glide, Registry registry) { final OkHttpClient.Builder builder = new OkHttpClient.Builder(); builder.readTimeout(YOUR_CUSTOM_TIMEOUT, TimeUnit.SECONDS); builder.writeTimeout(YOUR_CUSTOM_TIMEOUT, TimeUnit.SECONDS); builder.connectTimeout(YOUR_CUSTOM_TIMEOUT, TimeUnit.SECONDS); registry.append(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(builder.build())); }}
If you would like to use OkHttp
, please import glide:okhttp-integration
according to this, and then implement your own OkHttpGlideModule
:
@GlideModulepublic class CustomGlideModule extends OkHttpGlideModule { @Override public void applyOptions(Context context, GlideBuilder builder) { // stub } @Override public void registerComponents(Context context, Glide glide) { final OkHttpClient.Builder builder = new OkHttpClient.Builder(); // set your timeout here builder.readTimeout(30, TimeUnit.SECONDS); builder.writeTimeout(30, TimeUnit.SECONDS); builder.connectTimeout(30, TimeUnit.SECONDS); glide.register(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(builder.build())); }}