Rya*_*n R 5 java okhttp okhttp3
我最近升级到OkHttp3,并注意到您无法再直接从客户端取消标签.这必须由应用程序现在处理.
这里以CHANGELOG为例:
取消批量呼叫现在是应用程序的责任. 取消按标记调用的API已被删除,并替换为更通用的机制.调度程序现在通过其runningCalls()和queuedCalls()方法公开所有正在进行的调用.您可以编写通过标记,主机或其他方式选择调用的代码,并对不再需要的调用Call.cancel().
我用我的简单实用工具方法自行回答这篇文章,以取消正在运行或排队的Call by tag.
Rya*_*n R 10
使用以下实用程序类取消正在运行或排队Call的标记:
public class OkHttpUtils {
public static void cancelCallWithTag(OkHttpClient client, String tag) {
// A call may transition from queue -> running. Remove queued Calls first.
for(Call call : client.dispatcher().queuedCalls()) {
if(call.request().tag().equals(tag))
call.cancel();
}
for(Call call : client.dispatcher().runningCalls()) {
if(call.request().tag().equals(tag))
call.cancel();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个示例,其中包含一个测试用例:https://gist.github.com/RyanRamchandar/64c5863838940ec67f03
| 归档时间: |
|
| 查看次数: |
1932 次 |
| 最近记录: |