Android InputStream Internet断开连接

Isa*_*ler 7 java android http inputstream disconnect

在我的Android程序中,我有一些代码可以下载文件.这样工作正常,但是因为在手机上,你可以随时断开连接,我需要更改它重新连接并在你中途恢复下载并且有人打电话/你失去了小区接收/等等.我无法弄清楚如何检测InputStream已停止工作.请参阅以下代码:

InputStream in = c.getInputStream();

    byte[] buffer = new byte[8024];
    int len1 = 0;

    while ( (len1 = in.read(buffer)) > 0 ) {
        Log("-"+len1+"- Downloaded.");
        f.write(buffer,0, len1);
        Thread.sleep(50);
    }
Run Code Online (Sandbox Code Playgroud)

当我丢失互联网连接时,我的日志显示:

Log: -8024- Downloaded.
Log: -8024- Downloaded.
Log: -8024- Downloaded.
Log: -8024- Downloaded.
Log: -6024- Downloaded. (some lower number)
Run Code Online (Sandbox Code Playgroud)

然后我的程序暂时挂起((len1 =等我需要这样做当互联网断开时我等待互联网再次连接然后恢复下载.

Tof*_*eer 3

看看这里:http://developer.android.com/reference/java/nio/channels/SocketChannel.html

编辑(基于评论): http://www.jguru.com/faq/view.jsp ?EID=72378

因此,基于上述的想法......您可以将读取放入线程中,并定期检查线程是否已停止读取数据(可能更新共享变量)。如果它已终止连接和线程并根据需要进行处理。

另一种选择是不使用 HTTPURLConnection 并自行处理您需要的位。