Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


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

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

  1. ¿Necesito llamar a HttpURLConnection.disconnect , después de terminar su uso?
  2. ¿Necesito llamar a InputStream.close ?
  3. ¿Necesito llamar a InputStreamReader.close ?
  4. ¿Necesito tener la siguiente línea de código 2: httpUrlConnection.setDoInput(true) y httpUrlConnection.setDoOutput(false) , justo después de la construcción de httpUrlConnection?

La razón por la que lo pido, es la mayoría de los ejemplos que vi no hacer tal limpieza. Http://www.exampledepot.com/egs/java.net/post.html y http://www.vogella.com/articles/AndroidNetworking/article.html . Sólo quiero asegurarme de que esos ejemplos son correctos también.


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

  • ¿Qué permiso necesito para usar el flash de la cámara en la vista previa de la cámara?
  • Ingresos y alternativas de AdMob: Impresión vs clics
  • ¿Es posible comprobar la batería externa con Android SDK?
  • Creación de AOSP en un dispositivo personalizado
  • Cómo agregar datos en secuencia de caracteres dinámicamente en java?
  • Soporte de multidifusión en Android en modo Hotspot / Tethering
  • Xamarin.Forms acceder a los controles escritos en el código de marcado
  • ¿Android cambia la versión de SDK en Eclipse? No se puede resolver el destino android-x
  • 2 Solutions collect form web for “¿Necesito llamar a HttpURLConnection.disconnect después de terminar de usarlo”

    Sí, necesita cerrar primero el inputtream y cerrar httpconnection. Según javadoc .

    Cada instancia HttpURLConnection se utiliza para realizar una solicitud única, pero la conexión de red subyacente con el servidor HTTP puede ser compartida de forma transparente por otras instancias. Llamar a los métodos close () en el InputStream o OutputStream de una HttpURLConnection después de una solicitud puede liberar recursos de red asociados con esta instancia pero no tiene ningún efecto en ninguna conexión persistente compartida. Llamar al método de desconexión () puede cerrar el socket subyacente si una conexión persistente es por lo demás inactiva en ese momento.

    La respuesta a las dos preguntas siguientes depende del propósito de su conexión. Lea este enlace para más detalles.

    Creo que el requisito de llamar a setDoInput () o setDoOutput () es asegurarse de que se llamen antes de que algo se escriba o se lea de un flujo en la conexión. Más allá de eso, no estoy seguro de que importe cuándo se llaman esos métodos.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.