Android高能下载库FileDownloader

我们的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上仔细阅读源码哈~

猜你喜欢

转载自blog.csdn.net/losingcarryjie/article/details/77688064