Skip to content
Android多任务单线程断点文件下载器
Java
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Demo 显示下载速度 Jul 4, 2018
DownloadAnnotations 更新上传依赖配置 Jan 8, 2018
DownloadCompiler 更新上传依赖配置 Jan 8, 2018
DownloaderLibrary 动态文件传输控制 Jul 4, 2018
gradle/wrapper 更新上传依赖配置 Jan 8, 2018
.gitignore 添加忽略文件 May 22, 2018
README.md 发布1.2.0 Jul 4, 2018
build.gradle 发布1.2.0 Jul 4, 2018
settings.gradle 管理多个Module上传Bintray Sep 11, 2017

README.md

Downloader 文件下载器

DownloaderLibrary

Download

  • HttpURLConnection下载文件依赖库,实现多任务单线程断点下载
  • 临时文件的下载长度作为断点标记

权限

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

导入Android Studio

添加jCenter远程依赖到module里的build.gradle:

dependencies {
    compile 'com.excellence:downloader:_latestVersion'
  }

或者直接添加本地Library依赖

compile project(':DownloaderLibrary')

使用示例

  • 初始化

    // 默认下载选项:任务数2,单任务单线程下载
    Downloader.init(Context context)
    // 设置下载选项
    Downloader.init(Context context, DownloadOptions options)
  • 结束任务

    // 暂停所有下载任务,使用文件长度保存断点
    Downloader.destroy();
  • 监听两种方式

    推荐使用注解方式监听

    • 注解监听

      // 注册
      Downloader.register(this);
      
      // 解绑
      Downloader.unregister(this);
      
      // 监听
      @Download.onPreExecute
      public void onPre(DownloadTask task)
      {
          /**
           * 注解不添加URL,则获取全部任务的下载监听;
           * 加了URL,则过滤出对应的任务的下载监听
           * 如:@Download.onPreExecute({QQ_URL, ANGRYBIRDS_URL})
           */
      }
      
      @Download.onProgressChange
      public void onProgressChange(DownloadTask task)
      {
          /**
           * @see #onPre(DownloadTask)
           */
      }
      
      @Download.onProgressSpeedChange
      public void onProgressSpeedChange(DownloadTask task)
      {
          /**
           * @see #onPre(DownloadTask)
           */
      }
      
      @Download.onCancel
      public void onCancel(DownloadTask task)
      {
          /**
           * @see #onPre(DownloadTask)
           */
      }
      
      @Download.onError
      public void onError(DownloadTask task)
      {
          /**
           * @see #onPre(DownloadTask)
           */
      }
      
      @Download.onSuccess
      public void onSuccess(DownloadTask task)
      {
          /**
           * @see #onPre(DownloadTask)
           */
      }
    • 添加下载任务,并开始下载

      // 文件路径,下载链接,监听接口可以使用IListener接口,也可以使用Listener监听部分回调
      Downloader.addTask(File file, String DownloadURL, new IListener()
      {
      
          @Override
          public void onPreExecute(long fileSize)
          {
      
          }
      
          @Override
          public void onProgressChange(long fileSize, long downloadedSize)
          {
      
          }
      
          @Override
          public void onProgressChange(long fileSize, long downloadedSize, long speed)
          {
      
          }
      
          @Override
          public void onCancel()
          {
      
          }
      
          @Override
          public void onError(DownloadError error)
          {
      
          }
      
          @Override
          public void onSuccess()
          {
      
          }
      
      }));
  • 暂停下载任务

    DownloadTask.pause();
  • 恢复下载任务

    DownloadTask.resume();
  • 删除下载任务

    DownloadTask.discard();

修改日志

版本 描述
1.2.0 提升下载速度,增加设置项 2018-7-4
1.1.0 注解监听任务 2017-9-13
1.0.0 多任务单线程下载,临时下载文件长度保存断点记录 2017-8-11

注意事项

动态申请权限,可以参考permission

  • 1.1.0以前的版本,添加了限制:必须在Activity中初始化,原因是Android6.0+需要动态申请权限
  • 1.1.0以前的版本,没有适配畸形国产机的权限(使用原生方法不能申请权限成功),需自己实现
  • 1.1.0以后的版本,去掉在Activity初始化的限制,但是畸形国产机权限(使用原生方法不能申请权限成功) 和Android6.0+需要自己实现动态申请文件读写权限,否则会导致下载失败
You can’t perform that action at this time.