WIFI网络和移动网络同时打开,在下载过程中,关闭WIFI网络,此时系统关闭WIFI网络同时切换到移动网络,在此过程,出现以下异常,出现异常的语句是is.read(buffer),代码段如下:

try{
    while ((len = is.read(buffer)) != -1) {
        if(!CommonUtils.isDownloadAvailable()) {
            Logger.v(TAG, "Download operation is unavailable, stop down.");
            break;
        }
        if(!running) {
            Logger.v(TAG, "Down is cancelled, stop down.");
            break;
        }
        offset += len;
        file.write(buffer, 0, len);
        sendMessage(DownMessage.MSG_UPDATE, len);
    }
}catch(IOException e) {
    Logger.e(TAG, "Catch IO exception when read data from input stream.", e);
    throw e;
}

Catch IO exception when read data from input stream.

java.net.SocketException: recvfrom failed: ETIMEDOUT (Connection timed out)

at libcore.io.IoBridge.maybeThrowAfterRecvfrom(IoBridge.java:542)

at libcore.io.IoBridge.recvfrom(IoBridge.java:506)

at java.net.PlainSocketImpl.read(PlainSocketImpl.java:488)

at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46)

at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240)

at java.io.BufferedInputStream.read(BufferedInputStream.java:304)

at libcore.net.http.FixedLengthInputStream.read(FixedLengthInputStream.java:45)

at java.io.BufferedInputStream.read(BufferedInputStream.java:304)

at java.io.InputStream.read(InputStream.java:163)

at com.tvie.ivideo.download.logic.DownThread.run(DownThread.java:70)

Caused by: libcore.io.ErrnoException: recvfrom failed: ETIMEDOUT (Connection timed out)

at libcore.io.Posix.recvfromBytes(Native Method)

at libcore.io.Posix.recvfrom(Posix.java:131)

at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:164)

at libcore.io.IoBridge.recvfrom(IoBridge.java:503)

... 8 more