我正在使用 Retrofit 2-beta2 和 OkHttp 2.7.0。
要从 Retrofit 中获取 OkHttpClient
对象,我使用的是 Retrofit .client() 方法,并调用其 cancel(Object tag) 方法取消所有正在运行的请求,但是请求仍然在运行并返回响应。
即使客户端的 Dispatcher
的 getQueuedCallCount() 和 getRunningCallCount() 在调用 cancel() 后返回 0。
还需要做其他事情才能使其工作吗?或者这可能是 OkHttp 的一个 bug 吗?
作为解决方法,我在客户端的 ExecutorService
上调用了 shutdownNow()
,但我希望有一个更干净的解决方案。
Request
上的标签,因此创建了一个新的Request
对象。OkHttpClient.cancel(Object tag)
没有任何作用,因为原始的Request
(在其中调用cancel()
,因为它存在于Dispatcher
的请求队列中)仍然没有设置标签。似乎Retrofit没有公开任何方法或接口来在原始的Request
对象上设置标签。 - timemanx