fileDownloader是一个性能比较高的一个下载库,
优点 |
---|
多任务下载 |
多线程下载 |
断点续传 |
高并发 |
话不多说,直接干!
先添加依赖:
compile 'com.liulishuo.filedownloader:library:1.6.4'//最新版本见github
下一步需要在Application中初始化
public class APP extends Application {
@Override
public void onCreate() {
super.onCreate();
FileDownloader.setup(this);//注意作者已经不建议使用init方法
}
}
下面是具体用法
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+"%"+")");
}
}
具体的也可以参考
https://github.com/lingochamp/FileDownloader/blob/master/README-zh.md