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

2019-12-10 19:58:34王冬梅
  • }   });  
  • }   private void download() {  
  • // 获取SD卡目录   String dowloadDir = Environment.getExternalStorageDirectory()  
  • + "/threaddemodownload/";   File file = new File(dowloadDir);  
  • //创建下载目录   if (!file.exists()) {  
  • file.mkdirs();   }  
  • //读取下载线程数,如果为空,则单线程下载   int downloadTN = Integer.valueOf("".equals(downloadnum.getText()  
  • .toString()) ? "1" : downloadnum.getText().toString());   String fileName = "hetang.mp3";  
  • //开始下载前把下载按钮设置为不可用   downloadbutton.setClickable(false);  
  • //进度条设为0   downloadProgressBar.setProgress(0);  
  • //启动文件下载线程   new downloadTask("http://www.easck.com/201105110911/AA5CC27CBE34DEB50A194581D1300881/Special_323149/%E8%8D%B7%E5%A1%98%E6%9C%88%E8%89%B2.mp3", Integer  
  • .valueOf(downloadTN), dowloadDir + fileName).start();   }  
  • Handler handler = new Handler() {   @Override 
  • public void handleMessage(Message msg) {   //当收到更新视图消息时,计算已完成下载百分比,同时更新进度条信息  
  • int progress = (Double.valueOf((downloadedSize * 1.0 / fileSize * 100))).intValue();   if (progress == 100) {  
  • downloadbutton.setClickable(true);   downloadinfo.setText("下载完成!");  
  • Dialog mdialog = new AlertDialog.Builder(ThreadDownloadDemo.this)   .setTitle("提示信息")  
  • .setMessage("下载完成,总用时为:"+(SystemClock.currentThreadTimeMillis()-downloadtime)+"毫秒")   .setNegativeButton("确定", new DialogInterface.OnClickListener(){  
  • @Override  public void onClick(DialogInterface dialog, int which) {  
  • dialog.dismiss();   }  
  • })   .create();  
  • mdialog.show();   } else {