1

のインスタンスを使用してURLConnection、Web サーバーから画像をダウンロードしています。これは、ほとんどの電話でうまく機能します。

並列ダウンロードを行うためのインスピレーションとしてhttp://mindtherobot.com/blog/159/android-guts-intro-to-loopers-and-handlers/を使用しました。

画像を並行して取得する多数のスレッドを開始するときにタイムアウトから回復できるように、両方を呼び出しsetConnectTimeout(timeout)ます。setReadTimeout(timeout)

Samsung Galaxy s2 電話では、タイムアウトは無視され、一部のスレッドのダウンロードが数分間ハングしてから、例外がスローされ、ダウンロードが再試行されます。ダウンロードは 2 回目に成功します。

スローされる例外は次のようになります。

DownloadTask, network timeout (attempt #0)
java.net.SocketTimeoutException: failed to connect to host (port 80) after 1000ms
at libcore.io.IoBridge.connectErrno(IoBridge.java:150)
libcore.io.IoBridge.connect(IoBridge.java:112)
java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
java.net.Socket.connect(Socket.java:842)
libcore.net.http.HttpConnection.<init>(HttpConnection.java:77)
libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:351)
libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86)
libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308)
libcore.net.http.HttpEngine.connect(HttpEngine.java:303)
libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)
libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)
libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80)
..

これは、Samsung Galaxy s2 で既知の壊れた動作ですか?

Android バージョン: 4.0.4。

4

0 に答える 0