使用连接后需要调用java.net.HttpURLConnection.disconnect()吗?

时间:2012-08-27 19:09:27

标签: java android http httpurlconnection

我在Android上使用java.net.HttpURLConnection(API 16)。我使用connect()然后使用getInputStream()获取InputStream来从连接中读取数据。在我使用InputStream(即使用数据)后,我close()

问题是:这是否也会关闭基础HttpURLConnection(就像通过调用disconnect()一样)?我的猜测不是,但我只是想证实这一点。更一般的问题是:当连接不再有用时,我是否需要调用java.net.HttpURLConnection.disconnect()?

问题是我有一个方法可以向给定的主机打开HttpURLConnection。签名是:InputStream OpenHttpConnection(String stringURL, String method)。返回InputStream,调用者使用该disconnect()从连接中读取数据,但如果我从该方法的主体内调用InputStream,则close()将关闭并变得无用(我已经证实这一点)。但是,另一方面,如果我从InputStream呼叫{{1}},来自呼叫者的连接未关闭,那么我将有一个连接浪费资源。

有什么建议吗?

1 个答案:

答案 0 :(得分:7)

调用disconnect()会关闭基础流,如果它们仍处于打开状态,但它还会将连接的资源释放回连接池,因此在您能够调用它时仍然是个好主意(并且已经完成即使您正在其他地方离散地关闭流。