我在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}},来自呼叫者的连接未关闭,那么我将有一个连接浪费资源。
有什么建议吗?
答案 0 :(得分:7)
调用disconnect()
会关闭基础流,如果它们仍处于打开状态,但它还会将连接的资源释放回连接池,因此在您能够调用它时仍然是个好主意(并且已经完成即使您正在其他地方离散地关闭流。