я переопределить следующую функцию, чтобы сделать кэш себя (для обходного сетевого поиска)Должен ли я закрывать HttpURLConnection в android?
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
// depending on android version, I use the below function
// public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
HttpURLConnection urlConnection = null;
try {
urlConnection = (HttpURLConnection) url.openConnection();
in = new BufferedInputStream(urlConnection.getInputStream());
data = new String(ByteStreams.toByteArray(in));
} catch (Exception e) {
return null;
}
// do stuff with data but omitted here
return new WebResourceResponse(mimeType, "UTF-8", in);
}
Я не закрывающий URLConnection, потому что я пропусканием InputStream, который привязан к URLConnection.
Поскольку это распространенная идиома, что если вы open
что-то, вы должны close
это, я беспокоюсь, если я в порядке с кодом.
Do I need to call HttpURLConnection.disconnect after finish using it обсуждает это, но я не мог получить окончательный ответ там, разрешено ли нам not close
.
Как о копировании InputStream из URLConnection в другой поток, который будет использоваться для создания WebResourceResponse, то вы можете отключить URLConnection ? – BNK