为了账号安全,请及时绑定邮箱和手机立即绑定

读取输入流循环提前结束

is = conn.getInputStream();
					// 读取文件
					int len =-1;
					byte[] buffer = new byte[4*1024];
					long time = System.currentTimeMillis();
					while ((len = is.read(buffer)) != -1) {
						// 写入文件
						raf.write(buffer, 0, len);
						if (System.currentTimeMillis() - time > 500) {
							time = System.currentTimeMillis();
							// 把下载的进度发送广播道Activity
							mFinished += len;
							intent.putExtra("progress", (mFinished * 100)/ mFileInfo.getLength());
							Log.i("下载进度:",
									mFinished + "--" + mFileInfo.getLength()
											+ "--" + (mFinished * 100)
											/ mFileInfo.getLength() + "%");
							mContext.sendBroadcast(intent);
						}
						// 下载暂停时,保存下载进度
						if (isPause) {
							mDao.updataThread(mThreadInfo.getUrl(),
									mThreadInfo.getId(), mFinished);
							System.out.print("下载暂停");
							return;
						}
					}
					// 下载结束后删除线程信息
					mDao.deleteThread(mThreadInfo.getUrl(), mThreadInfo.getId());
					System.out.print("下载完成");
				}

http://img1.sycdn.imooc.com//5573118500011b3c03940052.jpg

网络内容获取区间设置也正确

conn.setRequestProperty("Range", "bytes=" + start + "-"
+ mThreadInfo.getEnd());


while循环每次都提前结束。

正在回答

1 回答

并不是while提前结束,你想想打印下载进度的条件是不是有什么不妥的地方?

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android-Service系列之多线程断点续传下载
  • 参与学习       21816    人
  • 解答问题       54    个

本视频教程主要代领我们要学习的多线程续传下载程序的开发

进入课程

读取输入流循环提前结束

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信