【发布时间】:2012-06-15 18:14:42
【问题描述】:
以下代码基本上可以按预期工作。然而,偏执,我想,为了避免资源泄漏,
- 用完后需要打电话给
HttpURLConnection.disconnect吗? - 需要拨打
InputStream.close吗? - 需要拨打
InputStreamReader.close吗? - 在构建httpUrlConnection之后是否需要有以下2行代码:
httpUrlConnection.setDoInput(true)和httpUrlConnection.setDoOutput(false)?
我之所以这么问,是因为我看到的大多数示例都没有进行此类清理。 http://www.exampledepot.com/egs/java.net/post.html 和 http://www.vogella.com/articles/AndroidNetworking/article.html。我只是想确保这些示例也是正确的。
public static String getResponseBodyAsString(String request) {
BufferedReader bufferedReader = null;
try {
URL url = new URL(request);
HttpURLConnection httpUrlConnection = (HttpURLConnection)url.openConnection();
InputStream inputStream = httpUrlConnection.getInputStream();
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
int charRead = 0;
char[] buffer = new char[1024];
StringBuffer stringBuffer = new StringBuffer();
while ((charRead = bufferedReader.read(buffer)) > 0) {
stringBuffer.append(buffer, 0, charRead);
}
return stringBuffer.toString();
} catch (MalformedURLException e) {
Log.e(TAG, "", e);
} catch (IOException e) {
Log.e(TAG, "", e);
} finally {
close(bufferedReader);
}
return null;
}
private static void close(Reader reader) {
if (reader != null) {
try {
reader.close();
} catch (IOException exp) {
Log.e(TAG, "", exp);
}
}
}
【问题讨论】:
标签: android