1

java.net.HttpURLConnectionAndroid(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 に答える