更新: 现在,使用
Dispatcher具有
cancelAll()方法的OkHttp
3可以轻松实现这一点。调度程序是从返回的
OkHttpClient.dispatcher()。
旧的解决方案: 这样做的唯一方法(我可以找到)是创建
OkHttpClientRetrofit 的子类并与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()); }}下一行取消所有带有标签的请求
TAG_CALL。由于上面的类
TAG_CALL针对所有请求设置,因此所有请求均被取消。
retrofit.client().cancel(OkHttpClientExt.TAG_CALL);



