1

java.net.HttpURLConnection在 Android (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那么我将有一个连接浪费资源。

有什么建议么?

4

1 回答 1

7

如果底层流仍然打开,调用disconnect()确实会关闭它们,但它还会将连接的资源释放回连接池,所以当你能够(并完成连接)时调用它仍然是一个好主意,即使你是在别处离散地关闭流。

于 2012-08-27T19:18:49.100 回答