Я использую Jsoup для анализа файла с удаленного URL-адреса следующим образом:
Document doc = Jsoup.connect(urlString)
.timeout(5000)
.get();
Если веб-сайт не отвечает в течение времени ожидания, выдается SocketTimeoutException
, как и ожидалось. У меня также включен StrictMode, чтобы предупредить меня о незакрытых ресурсах. По тайм-ауту StrictMode сообщает мне, что ресурс не был закрыт:
A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
java.lang.Throwable: Explicit termination method 'close' not called
at dalvik.system.CloseGuard.open(CloseGuard.java:184)
at java.io.FileInputStream.<init>(FileInputStream.java:80)
at libcore.io.DiskLruCache.get(DiskLruCache.java:391)
at libcore.net.http.HttpResponseCache.get(HttpResponseCache.java:98)
at android.net.http.HttpResponseCache.get(HttpResponseCache.java:204)
at libcore.net.http.HttpEngine.initResponseSource(HttpEngine.java:257)
at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:218)
at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:81)
at org.jsoup.helper.HttpConnection$Response.a(SourceFile:439)
at org.jsoup.helper.HttpConnection$Response.a(SourceFile:465)
at org.jsoup.helper.HttpConnection$Response.a(SourceFile:424)
at org.jsoup.helper.HttpConnection.execute(SourceFile:178)
at org.jsoup.helper.HttpConnection.get(SourceFile:167)
at com.example.$3.call(SourceFile:163)
at a.e.run(SourceFile:198)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:841)
Я не вижу, как закрыть ресурс, который создает Jsoup. Как бы я это сделал?