【问题标题】:Pause/Resume http connection download暂停/恢复 http 连接下载
【发布时间】:2013-01-20 09:10:31
【问题描述】:

我希望能够在 Android 中打开到给定文件的 http 连接并开始下载它。 我还必须能够在某个时候暂停下载并稍后恢复。 这在 Android 中是如何实现的?我不想重新开始下载。

【问题讨论】:

标签: android download-manager


【解决方案1】:

这样的下载器已经发布here

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    if(ISSUE_DOWNLOAD_STATUS.intValue()==ECMConstant.ECM_DOWNLOADING){
        File file=new File(DESTINATION_PATH);
        if(file.exists()){
             downloaded = (int) file.length();
             connection.setRequestProperty("Range", "bytes="+(file.length())+"-");
        }
    }else{
        connection.setRequestProperty("Range", "bytes=" + downloaded + "-");
    }
    connection.setDoInput(true);
    connection.setDoOutput(true);
    progressBar.setMax(connection.getContentLength());
     in = new BufferedInputStream(connection.getInputStream());
     fos=(downloaded==0)? new FileOutputStream(DESTINATION_PATH): new FileOutputStream(DESTINATION_PATH,true);
     bout = new BufferedOutputStream(fos, 1024);
    byte[] data = new byte[1024];
    int x = 0;
    while ((x = in.read(data, 0, 1024)) >= 0) {
        bout.write(data, 0, x);
         downloaded += x;
         progressBar.setProgress(downloaded);
    }

【讨论】:

  • 你能解释一下代码中发生了什么吗?
  • 代码首先检查是否有下载的字节存储为文件,例如您下载了120字节,它将设置连接请求并且只要求120到文件末尾。另一部分是设置连接长度的进度。这很容易。
  • 如果有其他范围的下载怎么办?例如 120 到 240,我们不想有 2 个连接(从 0 到 121,从 241 到结束)???这将发生在多连接下载中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-03
  • 2012-11-26
  • 1970-01-01
  • 1970-01-01
  • 2012-08-27
相关资源
最近更新 更多