我在Android上使用java.net.HttpURLConnection
(API 16)。我使用connect()
,然後getInputStream()
獲取InputStream
以從連接中讀取數據。我使用InputStream
(即消耗數據)後,我close()
它。使用連接後需要調用java.net.HttpURLConnection.disconnect()嗎?
現在的問題是:這是否也關閉了底層的HttpURLConnection
(好像通過調用disconnect()
就可以了)?我的猜測不是,但我只是想確認一下。更一般的問題是:當連接不再有用時,是否需要調用java.net.HttpURLConnection.disconnect()?
事情是我有一個方法來打開一個給定的主機HttpURLConnection
。簽名是:InputStream OpenHttpConnection(String stringURL, String method)
。這返回一個InputStream
,調用者用來從連接中讀取數據,但如果我從該方法的主體中調用disconnect()
,那麼InputStream
會關閉並且變得沒用(我已經證實了這一點)。但是,如果另一方面,當我從調用者呼叫InputStream
上的close()
時,連接沒有關閉,那麼我將有一個連接浪費資源。
有什麼建議嗎?
但它不會反過來工作,是嗎?即關閉底層的流(在這種情況下是'InputStream'),不'disconnect(')'HttpURLConnection',對嗎? – sroj
這是正確的。 – Devunwired
謝謝。那麼你有什麼建議,能夠在我的情況下'disconnect()'?鑑於此,一旦'InputStream OpenHttpConnection(String stringURL,String method)'返回,我不再有一個連接的引用(我當然可以用'InputStream'和'HttpURLConnection'返回一個包裝器對象,但也許有一個更優雅的解決方案)。 – sroj