java - Android InputStream 互联网断开

标签 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);
    }

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

Log: -8024- Downloaded.
Log: -8024- Downloaded.
Log: -8024- Downloaded.
Log: -8024- Downloaded.
Log: -6024- Downloaded. (some lower number)

然后我的程序暂时挂起((len1 = 等。我需要这样做,所以当互联网断开连接时,我等待互联网再次连接,然后继续下载。

最佳答案

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

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

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

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

关于java - Android InputStream 互联网断开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4704827/

相关文章:

android - 如何在 Android 中交叉/抓取一些文本?

java - Sonar分析导致通过Jenkins在maven项目上索引0个文件

java - 使用 Jackson 序列化具有 JSON 通用性的类

Android 应用程序类生命周期文档

android - 如何设置 Android 闹钟在特定日期之前触发

javascript - jQuery 是否支持从 X-JSON HTTP header 读取 JSON?

php - 如何在不使用表单的情况下使用 curl 发送文件?

java - 如何从 Spring Controller 获取 AOP 建议中的 RequestMapping 请求?

java - 为什么 Spring boot 无法识别我的第二个数据源配置?

java - 如何在 Spring Boot 中验证 JSON 请求?