项目引用
implementation 'com.liulishuo.filedownloader:library:1.7.7'
全局初始化
在Applicaiton的onCreate中进行初始化,调用对应FileDownloader.setupOnApplicationOnCreate(application)(需要自定义属性)或FileDownloader.setup(Context)即可。
任务启动
单任务
FileDownloader.getImpl().create(url)
.setPath(path)
.setListener(new FileDownloadListener(){
}).start();
获取下载实例后,传入下载所用url路径,下载到的本地路径path,设置好下载监听器(下载完成、错误时的反馈),直接start启动即可。
多任务
①定义监听器
和上述单任务相同,需要创建好监听器
②创建下载任务队列
final FileDownloadQueueSet queueSet = new FileDownloadQueueSet(downloadListener);
创建时需要传入创建好的监听器
③创建任务路径集合
final List<BaseDownloadTask> tasks = new ArrayList<>();
for (int i = 0; i < count; i++) {
tasks.add(FileDownloader.getImpl().create(Constant.URLS[i]).setTag(i + 1));
}
和单任务创建相似,FileDownloader.getImpl().create创建出下载任务,由List进行存储
④下载前的设置工作
queueSet.disableCallbackProgressTimes();
设置不需要关心每个任务的Progress监听,只用关心任务是否完成即可。
queueSet.setAutoRetryTimes(3);
设置失败后尝试次数。
⑤设置下载形式
if (serial) {
// 串行执行该任务队列
queueSet.downloadSequentially(tasks);
}
if (parallel) {
// 并行执行该任务队列
queueSet.downloadTogether(tasks);
}
设置下载是串行还是并行发生。
⑥下载启动
queueSet.start()
最后用start启动即可
文件存储路径生成
fun getDownloadPath(file: String): String {
val dir = File(FileDownloadUtils.getDefaultSaveRootPath() + File.separator + "dir")
if (!dir.exists()) {
dir.mkdir()
}
return fileSchool.absolutePath + File.separator + file
}
借助FileDownloader自带的FileDownloadUtils工具获取存储根路径,在其上添加用于保存下载内容的文件夹,再在文件夹后添加对应文件即可获得存储路径。