Intereting Posts
Android – при выходе из WebView звук все еще продолжает воспроизводиться Указание фильтра намерения SEND (совместного использования) для службы Android NDK – пишите только на C / C ++ Можем ли мы иметь несколько приложений в одном проекте Android Studio? Android: весь ListView изменяет цвет в фокусе, а не только дочерний элемент ListView Как создать файлы .docx и .xlsx на Android Как заполнить изображение внутри ImageView пользовательской левой и верхней координатами | Android Как установить приложение Android на реальном устройстве без публикации и Eclipse? Android WebView JellyBean -> Не должно быть: не найдены узлы проверки на основе прямой основы При съемке фото get – java.lang.Throwable: file: // Uri выставляется через ClipData.Item.getUri () Просмотр файлов postscript на android Добавление кнопки в ActionBar с помощью ActionBarSherlock Android MediaController перехватывает все другие события касания Наложение над ImageView на Android Разбить изменение переменной в Android Studio 1.1.0?

Мне нужно вызвать HttpURLConnection.disconnect после окончания использования

Следующий код в основном работает так, как ожидалось. Однако, чтобы быть параноидальным, мне было интересно, чтобы избежать утечки ресурсов,

  1. Нужно ли мне позвонить HttpURLConnection.disconnect после завершения его использования?
  2. Мне нужно вызвать InputStream.close ?
  3. Мне нужно вызвать InputStreamReader.close ?
  4. Нужно ли иметь следующую строку кода: httpUrlConnection.setDoInput(true) и httpUrlConnection.setDoOutput(false) , сразу после построения httpUrlConnection?

Причина, по которой я так прошу, – это большинство примеров, которые я видел, не делают такую ​​очистку. 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); } } } 

Solutions Collecting From Web of "Мне нужно вызвать HttpURLConnection.disconnect после окончания использования"

Да, вам нужно сначала закрыть входной поток и закрыть httpconnection. Согласно javadoc .

Каждый экземпляр HttpURLConnection используется для создания единого запроса, но базовое сетевое подключение к HTTP-серверу может быть прозрачно распространено другими экземплярами. Вызов методов close () в InputStream или OutputStream HttpURLConnection после запроса может освобождать сетевые ресурсы, связанные с этим экземпляром, но не влияет на какое-либо совместное постоянное соединение. Вызов метода disconnect () может закрыть базовый сокет, если в то время постоянное соединение неактивно.

Ответ на следующие два вопроса зависит от цели вашего подключения. Прочтите эту ссылку для получения более подробной информации.

Я считаю, что требование вызова setDoInput () или setDoOutput () состоит в том, чтобы убедиться, что они вызываются до того, как что-либо записано или прочитано из потока в соединении. Помимо этого, я не уверен, что это важно, когда называются эти методы.