I\'m using Retrofit 2-beta2 with OkHttp 2.7.0.
To get the OkHttpClient
object from Retrofit I\'m using the Retrofit .client() method and to cancel all it
UPDATE: This is now much easier to achieve in OkHttp 3 by using Dispatcher
which has a cancelAll()
method. The dispatcher is returned from OkHttpClient.dispatcher()
.
Old Solution:
The only way to do this (that I could find) is to create a subclass of OkHttpClient
and use that with Retrofit.
class OkHttpClientExt extends OkHttpClient {
static final Object TAG_CALL = new Object();
@Override
public Call newCall(Request request) {
Request.Builder requestBuilder = request.newBuilder();
requestBuilder.tag(TAG_CALL);
return super.newCall(requestBuilder.build());
}
}
The following line cancels all requests with tag TAG_CALL
. Since the class above sets TAG_CALL
on all requests, so all requests are cancelled.
retrofit.client().cancel(OkHttpClientExt.TAG_CALL);