/OkDownload

一个多线程下载框架

Primary LanguageJava

XDownload

使用纯Java写的多线程下载器,可以在各平台上使用,在Android中有额外扩展

使用:

Add it in your root build.gradle at the end of repositories:

  allprojects {
  	repositories {
  		maven { url 'https://jitpack.io' }
  	}
  }

Step 2. Add the dependency

  dependencies {
          implementation 'com.github.fengxiaocan.OkDownload:OkDownload:1.2.0'
          implementation 'com.github.fengxiaocan.OkDownload:OkDownload-core:1.2.0'
  }

jar包下载:Downloader.jar

JavaGUI各平台可视化操作界面DownloaderGUI.jar

Java中使用方法:

//初始化配置
OkDownload
	.setMaxThreadCount(30);//构建预下载请求任务队列的最大线程数,非下载数
	.config(XConfig
            .with(System.getProperty("user.dir"))
            .defaultName(XConfig.DefaultName.MD5)//默认起名名称,除非自己声明保存文件名
            // MD5:默认以下载URL MD5起名  TIME:默认以时间戳来命名  ORIGINAL:默认根据下载链接的名称来命名
            .isUseAutoRetry(true)//是否使用出错自动重试
            .autoRetryTimes(500)//自动重试次数
            .autoRetryInterval(5000)//自动重试间隔毫秒
            .userAgent("UA")//默认UA
            .isUseMultiThread(true)//是否使用多线程下载
            .isUseBreakpointResume(true)//是否使用断点续传
            .downloadMaxTaskCount(2)//同时下载的任务数
            .downloadMultiThreadSize(5)//默认下载单个文件的多线程数
            .maxDownloadBlockSize(5*1024*1024)//默认多线程下载的单线程最大下载文件块大小,默认5MB
            .minDownloadBlockSize(100*1024)//默认多线程下载的单线程最大下载文件块大小,默认100KB
            .updateProgressTimes(1000)//更新进度条的间隔
            .updateSpeedTimes(1000)//更新下载速度的间隔
            .bufferedSize(1024*8)//写文件buff大小,该数值大小不能小于2048,数值变小,下载速度会变慢,默认10kB
            .ignoredSpeed(false)//是否忽略下载的速度回调
            .ignoredProgress(false)//是否忽略下载的progress回调
            .iOTimeOut(50000)//设置IO流读取时间,单位为毫秒,默认20秒,该时间不能少于5秒
            .permitAllSslCertificate(false)//是否允许所有的SSL证书运行,即可以下载所有的https的连接,不允许可以自行设置下载的ce证书
            .build());
	
//发起请求
String tag = OkDownload.download(url)
           .setTag(tag)//设置tag,不设置
           .setSaveFile(saveFile)//设置保存文件路径
           .setCacheDir(cacheDir)//设置下载临时文件的保存地址
           .setDownloadListener()//设置下载完成或失败的监听
           .setExecuteLisener()//设置连接请求的监听
           .setOnProgressListener()//设置下载进度监听
           .setOnSpeedListener()//设置下载速度监听
           .delect()//删除之前下载的文件
           .addParams(参数名,参数值)//在URL后面添加参数
           .addHeader(请求头名,请求头值)//添加请求头
           .setUserAgent(ua)//UA
           .setSSLCertificate(path)//https证书
           .setSSLCertificateFactory(factory)//https 证书创建器,优先级高于路径设置,设置后证书路径无效
           .permitAllSslCertificate(false)//是否允许所有的SSL证书运行,即可以下载所有的https的连接,优先级最低
           .scheduleOn(Schedulers)//需要异步回调的在这里处理,实现Schedulers
           .start();
       
    //取消下载=暂停下载,恢复下载再走一遍请求逻辑
    OkDownload.cancelExecutor(tag);

    //OnSpeedListener:下载速度监听器
    //request:下载任务请求 speed:下载速度 time:距离上次回调的时间间隔
    void onSpeed(DownloadExecutor request,int speed,int time)

    //OnProgressListener:下载进度监听器
    void onProgress(DownloadExecutor request,float progress);

    //OnDownloadConnectListener:请求连接监听器
    //连接上请求
	void onStart(DownloadExecutor request);
    //请求失败,code为返回码,error为服务器返回错误信息
	void onError(DownloadExecutor request,int code,String error);
    //下载取消,多线程下载会有多次回调
	void onCancel(DownloadExecutor request);
    //下载出错,正在重试
	void onRetry(DownloadExecutor request,int retryCount);

    //OnDownloadListener:下载结果监听器
    //下载完成
    void onComplete(DownloadExecutor request);
    //下载失败
	void onFailure(DownloadExecutor request);

Android中使用方式(其他方法跟Java一致):

//安卓初始化必须
OkDownload.init(context.getApplicationContext());

OkDownload.download(url)
	.scheduleOn(AndroidSchedulers.mainThread())//异步回调
	.start();