Shu*_*uri 11 java android retrofit okhttp
我正在使用Retrofit 2-beta2和OkHttp 2.7.0.
为了OkHttpClient从Retrofit 获取对象,我正在使用Retrofit .client()方法并取消所有正在运行的请求,我称之为取消(Object tag)方法,但请求仍然继续运行,我得到了响应.
即使客户Dispatcher的getQueuedCallCount()和getRunningCallCount()返回0调用cancel()之后.
还有什么我需要做的才能工作吗?或者它可能是OkHttp中的错误?
作为一种解决方法,我打电话shutdownNow()给客户,ExecutorService 但我更喜欢更清洁的解决方案.
Shu*_*uri 22
更新:现在通过使用Dispatcher具有cancelAll()方法的OkHttp 3更容易实现.调度员退回OkHttpClient.dispatcher().
旧解决方案:
执行此操作(我能找到)的唯一方法是创建子类OkHttpClient并使用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());
}
}
Run Code Online (Sandbox Code Playgroud)
以下行取消所有带标记的请求TAG_CALL.由于上面的类设置TAG_CALL了所有请求,因此所有请求都被取消.
retrofit.client().cancel(OkHttpClientExt.TAG_CALL);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10063 次 |
| 最近记录: |