Android实现多线程下载文件的方法

2019-12-10 19:58:34王冬梅
  • Log.i("bb", "======================fileSize:"+fileSize);  //计算每个线程要下载的数据量 
  • blockSize = fileSize / threadNum;  // 解决整除后百分比计算误差 
  • downloadSizeMore = (fileSize % threadNum);  File file = new File(fileName); 
  • for (int i = 0; i < threadNum; i++) {  Log.i("bb", "======================i:"+i); 
  • //启动线程,分别下载自己需要下载的部分  FileDownloadThread fdt = new FileDownloadThread(url, file, i * blockSize, (i + 1) * blockSize - 1); 
  • fdt.setName("Thread" + i);  fdt.start(); 
  • fds[i] = fdt;  } 
  • boolean finished = false;  while (!finished) { 
  • // 先把整除的余数搞定  downloadedSize = downloadSizeMore; 
  • finished = true;  for (int i = 0; i < fds.length; i++) { 
  • downloadedSize += fds[i].getDownloadSize();  if (!fds[i].isFinished()) { 
  • finished = false;  } 
  • }  handler.sendEmptyMessage(0); 
  • //线程暂停一秒sleep(1000);  } 
  • }  catch (Exception e) { 
  • e.printStackTrace();  } 
  • }  } 
  • }  

    这里启动线程将文件分割为几个部分,每一个部分再启动一个线程去下载数据