多线程下载一个文件时,进度条显示的进度数是有问题的!
(在页面上添加进度条的进度值)当文件的大小不能被平均分配到每个子线程中下载时,也就是说有种可能一个线程的下载大小肯定会是大于平均值,那么进度条显示的进度数100%就显示错误了!那怎么获取所有子线程总的下载进度数呢?????
//SC_PARTIAL_CONTENT 部分下载的时候返回的状态码206 当使用Range
if (connection.getResponseCode() == HttpStatus.SC_PARTIAL_CONTENT) {
//读取数据
input = connection.getInputStream();
byte [] buffer = new byte[1024*4];
int len=-1;
long time = System.currentTimeMillis();
System.out.println("文件总大小--->"+fileInfo.getLength());
while((len = input.read(buffer)) != -1){
//写入文件
raf.write(buffer, 0, len);
finished += len;
System.out.println("finished_real--->"+finished);
//if (System.currentTimeMillis()-time> 500) {
time = System.currentTimeMillis();
//--------------------这里的finished只是单个线程的进度表示整个下载任务的进度,可能单个线程已经结束(界面上已经显示100%),但是整个下载任务还没结束????!!!!,那怎么获取所有子线程总的下载进度数呢?????
intent.putExtra("finished", finished*100/fileInfo.getLength());
context.sendBroadcast(intent);
//}
//在下载暂停时,保存下载进度
if (isPause) {
System.out.println("暂停下载");
dao.updateThread(threadInfo.getUrl(), threadInfo.getId(), finished);
return;
}
//System.out.println("----------");
}
System.out.println("下载完成");
//下载完成,删除线程信息
dao.deleteThread(threadInfo.getUrl(), threadInfo.getId());
}