【问题标题】:OkHttpClient close connectionOkHttpClient 关闭连接
【发布时间】:2015-05-17 07:43:20
【问题描述】:

我想使用 OkHttpClient 加载一个 url,如果给定 url 的网站以 pdf 内容类型响应,我将继续下载 PDF,否则我想忽略响应。

我的问题是,我是否需要做任何特别的事情来关闭请求/响应,或者我是否需要做任何事情来表明如果我选择不读取响应字节流,我将不会使用响应?如果没有,OkHttpClient 什么时候关闭连接?

【问题讨论】:

    标签: java android okhttp


    【解决方案1】:

    调用response.body().close() 将释放响应所持有的所有资源。连接池将保持连接打开,但如果未使用,则会在超时后自动关闭。

    【讨论】:

    • 感谢您的回答。我是否需要自己关闭响应,或者如果我忽略它们会自动释放资源?即使我确实在字节流中读取,我是否应该在响应上调用关闭,当然是在读取之后?最后,如果我在 onfinished 回调中对请求调用取消,这会释放响应吗?
    • 一般情况下需要关闭响应。如果你把字节流读到最后,OkHttp 会为你释放资源,但无论如何关闭它仍然是一个好习惯。如果您取消请求,则只需在调用 onResponse 时关闭。如果没有,那么我们会尽早取消它,以至于没有什么可以关闭的。
    • 您也可以调用response.close(),根据文档,它等同于response.body().close()
    猜你喜欢
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-09
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多