OkHttpClient 关闭连接
Posted
技术标签:
【中文标题】OkHttpClient 关闭连接【英文标题】:OkHttpClient close connection 【发布时间】:2015-05-17 07:43:20 【问题描述】:我想使用 OkHttpClient 加载一个 url,如果给定 url 的网站以 pdf 内容类型响应,我将继续下载 PDF,否则我想忽略响应。
我的问题是,我是否需要做任何特别的事情来关闭请求/响应,或者我是否需要做任何事情来表明如果我选择不读取响应字节流,我将不会使用响应?如果没有,OkHttpClient 什么时候关闭连接?
【问题讨论】:
【参考方案1】:调用response.body().close()
将释放响应所持有的所有资源。连接池将保持连接打开,但如果未使用,则会在超时后自动关闭。
【讨论】:
感谢您的回答。我是否需要自己关闭响应,或者如果我忽略它们会自动释放资源?即使我确实在字节流中读取,我是否应该在响应上调用关闭,当然是在读取之后?最后,如果我在 onfinished 回调中对请求调用取消,这会释放响应吗? 一般情况下需要关闭响应。如果你把字节流读到最后,OkHttp 会为你释放资源,但无论如何关闭它仍然是一个好习惯。如果您取消请求,则只需在调用onResponse
时关闭。如果没有,那么我们会尽早取消它,以至于没有什么可以关闭的。
您也可以调用response.close()
,根据文档,它等同于response.body().close()
。以上是关于OkHttpClient 关闭连接的主要内容,如果未能解决你的问题,请参考以下文章