¿Debo llamar a HttpURLConnection.disconnect después de terminar de usarlo?

El siguiente código básicamente funciona como se espera. Sin embargo, para ser paranoico, me preguntaba, para evitar la fuga de recursos,

Necesito llamarHttpURLConnection.disconnect, despues de terminar su uso?Necesito llamarInputStream.close?Necesito llamarInputStreamReader.close?¿Necesito tener la siguiente línea de código 2:httpUrlConnection.setDoInput(true) yhttpUrlConnection.setDoOutput(false), justo después de la construcción de httpUrlConnection?

La razón por la que lo pregunto es que la mayoría de los ejemplos que vi no hacen tal limpieza.http://www.exampledepot.com/egs/java.net/post.html yhttp://www.vogella.com/articles/AndroidNetworking/article.html. Solo quiero asegurarme de que esos ejemplos también sean correctos.

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);
        }
    }
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta