实现文件 多线程断点下载
基本功能 :开始下载 暂停下载 等下载功能
自定义: Https 证书、设置下载地址、 最大下载文件数量等...
// 项目引用
dependencies {
compile 'com.github.LidongWen:DownLoadUtils:1.2.0'
}
// 根目录下引用
allprojects {
repositories {
jcenter()
maven { url "https://www.jitpack.io" }
}
}- 下载功能
开始下载
暂停下载
继续下载
重新下载
下载时的数据回传监听
- 文件 DB 操作
数据库 DB 操作;
获取下载列表(All);
获取下载列表(暂停/下载中 未完成列表);
获取下载列表(已完成列表)
- 下载设置
设置最大下载文件数量;
设置同时最大下载数
设置文件下载目录
支持 Https 设置证书
##初始化
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
DownloadUtils.initDataBase(this);
// DownloadUtils.changeFileDir(fileDir);//设置默认地址
}
}##下载文件
| DownLoadUtils | direction |
|---|---|
| startDownload(Context mContext, String url, String fileName, T mes) | mes:自定义数据 |
| startDownload(Context mContext, String id, String url, String fileName, T mes) | 自定义ID,mes:自定义数据 |
| startDownload(Context mContext, FileInfo mFileInfo, T msg) |
##暂停
| DownLoadUtils | |
|---|---|
| stopById(String id) | |
| stop(FileInfo mFileInfo) |
##继续下载
| DownLoadUtils | |
|---|---|
| startDownload(Context mContext, String url, String fileName, T mes) | mes:自定义数据 |
| startDownload(Context mContext, String id, String url, String fileName, T mes) | 自定义ID,mes:自定义数据 |
| startDownload(Context mContext, FileInfo mFileInfo, T msg) |
##重新下载
| DownLoadUtils | |
|---|---|
| ReDownLoadById(Context mContext, String id, T msg) | |
| ReDownLoad(Context mContext, String url, T msg) | |
| ReDownLoad(Context mContext, FileInfo mFileInfo, T msg) |
实时 获取下载文件的进度,这边通过广播来接收下载进度
/**
* 如果想知道下载的情况,需要注册该广播
*/
// 广播的分类
IntentFilter filter = new IntentFilter();
filter.addAction(IntentAction.ACTION_UPDATE); //
filter.addAction(IntentAction.ACTION_FINISH); //结束时
filter.addAction(IntentAction.ACTION_PAUSE); //暂停
filter.addAction(IntentAction.ACTION_FAILE); //下载失败
filter.addAction(IntentAction.ACTION_WAIT_DownLoad); //进入下载队列等待下载
registerReceiver(mReceiver, filter);
//数据参数
/**
* 【下载进度】的key名称
*/
public static final String FINISHED_TAG = "finished";
/**
* 【下载速率】的key名称
*/
public static final String DOWNLOAD_RATE_TAG = "rate";
/**
* 【文件id】的key
*/
public static final String ID_Postion = "id";
/**
* 【下载文件】的key名称
*/
public static final String FILEINFO_TAG = "fileInfo";
/**
* 【其他信息】
*/
public static final String OTHER_MESSAGE = "other_Message";DownLoadUtils.getFileDB().selectByPrimaryKey();
List list= DownloadUtils.getFileDB().getQueryBuilder().where(FileInfoDao.Properties.Id.eq(threeModel.getId())).list();
//等等一系列的数据库操作DownLoadUtils.getAllFileInfos();DownLoadUtils.getFileInfosByDownLoading();DownLoadUtils.getFileInfosByFinished();DownLoadSetting.setFileMaxNum(int maxNum)DownLoadSetting.changeFileDir(String fileDir)- 设置支持所有的https
DownLoadSetting.setSsl(null,null,null);- 设置具体的证书
DownLoadSetting.setSsl(证书的inputstream, null, null);- 双向认证
DownLoadSetting.setSsl(证书的inputstream,
本地证书的inputstream,
本地证书的密码)E-mail:wenld2014@163.com
blog: wenld's blog

