使用FileDownLoader下载文件

这两天项目里面使用到了下载文件这个功能,于是我在github上面找了一下,发现一个star得最多的一个框架用的人特别多,于是我就在自己的代码里面写了一个单例,用来专门针对单个文件进行下载的类。

关于FileDownLoader这个下载引擎在这里我就不多做介绍了,具体可以打开github上的地址:FileDownLoader 查看~

使用FileDownLoader

如果使用的是AndroidStudio开发工具,需要在项目中引用:

compile 'com.liulishuo.filedownloader:library:1.3.0'
然后在Application.Oncreate  中进行全局初始化


public XXApplication extends Application{
    ...
    @Override
    public void onCreate() {
        /**
         * 仅仅是缓存Application的Context,不耗时
         */
        FileDownloader.init(getApplicationContext);
    }
    ...
}


下载介绍一下我写的单例下载:

1.单任务下载

package com.kuaibao.skuaidi.manager;


import com.liulishuo.filedownloader.BaseDownloadTask;
import com.liulishuo.filedownloader.FileDownloadListener;
import com.liulishuo.filedownloader.FileDownloader;

/**
 * Created by gudd
 * on 2016/10/27.
 * compile 'com.liulishuo.filedownloader:library:1.3.0'

 */

public class FileDownloaderManager {
    public static FileDownloaderManager instance = null;

    private FileDownloaderManager() {
    }// 避免类在外部被实例化

    public static FileDownloaderManager getInstance() {
        if (null == instance) {
            instance = new FileDownloaderManager();
        }
        return instance;
    }

    /**
     * 单任务下载
     *
     * @param downLoadUri  文件下载网络地址
     * @param destinationUri 下载文件的存储绝对路径
     */
    public void startDownLoadFileSingle(String downLoadUri, String destinationUri,FileDownLoaderCallBack callBack) {
        FileDownloader.getImpl().create(downLoadUri).setPath(destinationUri).setListener(fileDownloadListener(callBack)).start();
    }

// 下载方法
    private FileDownloadListener fileDownloadListener(final FileDownLoaderCallBack callBack) {
        return new FileDownloadListener() {
            @Override
            protected void pending(BaseDownloadTask task, int soFarBytes, int totalBytes) {
                //等待,已经进入下载队列
            }

            @Override
            protected void progress(BaseDownloadTask task, int soFarBytes, int totalBytes) {
                //下载进度回调
                if (callBack != null){
                    callBack.downLoadProgress(task,soFarBytes,totalBytes);
                }
            }

            @Override
            protected void completed(BaseDownloadTask task) {
                //完成整个下载过程
                if (callBack != null){
                    callBack.downLoadComplated(task);
                }
            }

            @Override
            protected void paused(BaseDownloadTask task, int soFarBytes, int totalBytes) {
                //暂停下载
            }

            @Override
            protected void error(BaseDownloadTask task, Throwable e) {
                //下载出现错误
                if (callBack != null){
                    callBack.downLoadError(task,e);
                }
            }

            @Override
            protected void warn(BaseDownloadTask task) {
                //在下载队列中(正在等待/正在下载)已经存在相同下载连接与相同存储路径的任务
            }
        };
    }
    // 这里是下载过程中的回调,由于下载过程中,我们只需要知道文件是否下载完成、文件是否下载失败、还有文件下载进度,
所以这里只自定义三个方法用于回调
    public interface FileDownLoaderCallBack{
        void downLoadComplated(BaseDownloadTask task);
        void downLoadError(BaseDownloadTask task, Throwable e);
        void downLoadProgress(BaseDownloadTask task, int soFarBytes, int totalBytes);
    }


}


所以,你在使用的时候只需要使用一行代码就可以下载文件了:

FileDownloaderManager.getInstance().startDownLoadFileSingle("下载地址",“保存地址”,new FileDownLoaderCallBack({
......
}));



2.多任务下载(下次更新)






你可能感兴趣的:(下载)