您的位置:首页 > 移动开发 > Android开发

Android高能下载库FileDownloader

2017-08-29 21:01 363 查看
我们的App中可能会提供给用户下载文件或者图片的场景,然后你可能就会考虑以下名词了

多任务下载

多线程下载

断点续传

高并发

没错,如果你自己手写下载库的话需要考虑这四个名词,接下来我们学习一下FileDownloader库,该库的作者对这四点已经封装的很好了,5000人Star的开源库你怎可错过呢?

老规矩,引用别人的库的时候一定要放别人的github地址

FileDownloader Github地址

1 引用导入

compile 'com.liulishuo.filedownloader:library:1.6.4'//最新版本见github


2 全局初始化

public class APP extends Application {
@Override
public void onCreate() {
super.onCreate();
FileDownloader.setup(this);//注意作者已经不建议使用init方法
}
}


3 具体调用

注意这里的path是文件名而不是文件夹的名字

注意这里的path是文件名而不是文件夹的名字

注意这里的path是文件名而不是文件夹的名字

FileDownloader.getImpl().create(url).setWifiRequired(true).setPath(path).setListener(new FileDownloadListener() {
@Override
protected void pending(BaseDownloadTask task, int soFarBytes, int totalBytes) {

}

@Override
protected void progress(BaseDownloadTask task, int soFarBytes, int totalBytes) {
int percent=(int) ((double) soFarBytes / (double) totalBytes * 100);
textView.setText("("+percent+"%"+")");
}

@Override
protected void blockComplete(BaseDownloadTask task) {

}

@Override
protected void completed(BaseDownloadTask task) {
Toast.makeText(MainActivity.this,"下载完成!",Toast.LENGTH_SHORT).show();
textView.setText("("+"100%"+")");
}

@Override
protected void paused(BaseDownloadTask task, int soFarBytes, int totalBytes) {

}

@Override
protected void error(BaseDownloadTask task, Throwable e) {

}

@Override
protected void warn(BaseDownloadTask task) {
continueDownLoad(task);//如果存在了相同的任务,那么就继续下载
}
}).start();


private void continueDownLoad(BaseDownloadTask task) {
while (task.getSmallFileSoFarBytes()!=task.getSmallFileTotalBytes()){
int percent=(int) ((double) task.getSmallFileSoFarBytes() / (double) task.getSmallFileTotalBytes() * 100);
textView.setText("("+percent+"%"+")");
}
}


没错,就是这么简单好用!这个库远比我的demo要强大,我只是展示了他的基础用法,如果用户有自己特殊的需求还请移步到github上仔细阅读源码哈~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息