Java Android InputStream Internet断开连接
在我的Android程序中,我有一些下载文件的代码。这很好,但是因为在手机上,你可以随时断开连接,我需要更改它。当你进行到一半时,它会重新连接并恢复下载,有人打电话/你失去手机接收/等等。我不知道如何检测输入流已停止工作。请参阅下面的代码:Java Android InputStream Internet断开连接,java,android,http,inputstream,disconnect,Java,Android,Http,Inputstream,Disconnect,在我的Android程序中,我有一些下载文件的代码。这很好,但是因为在手机上,你可以随时断开连接,我需要更改它。当你进行到一半时,它会重新连接并恢复下载,有人打电话/你失去手机接收/等等。我不知道如何检测输入流已停止工作。请参阅下面的代码: InputStream in = c.getInputStream(); byte[] buffer = new byte[8024]; int len1 = 0; while ( (len1 = in.read(buffer))
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);
}
当我失去internet连接时,我的日志显示:
Log: -8024- Downloaded.
Log: -8024- Downloaded.
Log: -8024- Downloaded.
Log: -8024- Downloaded.
Log: -6024- Downloaded. (some lower number)
然后我的程序就挂起了((len1=等)。我需要这样做,当互联网断开连接时,我会等待互联网再次连接,然后继续下载。看这里:
编辑(基于评论):
因此,基于上述想法……您可以将读取内容放入线程中,定期检查线程是否已停止读取数据(可能会更新共享变量)。如果它已终止连接和线程,并根据需要进行处理
另一种选择是不使用HTTPURLConnection,而是自行处理所需的位。请看这里:
编辑(基于评论):
因此,基于上述想法……您可以将读取内容放入线程中,定期检查线程是否已停止读取数据(可能会更新共享变量)。如果它已终止连接和线程,并根据需要进行处理
另一种选择是不使用HTTPURLConnection,而是自行处理所需的位。您好,谢谢,但我有一个HTTPURLConnection-您如何从中获得SocketChannel?谢谢,您好,谢谢,但我有一个HTTPURLConnection-您如何从中获得SocketChannel?谢谢,