AndroidAPP开发经验总结

Android下载管理器

2018-07-11  本文已影响76人  胖胖下厨房

DownloadManager

Android下载管理器

1、可实现下载、暂停、取消、完成、失败、队列等待等状态的监听

2、可断点续传

3、基于okhttp的下载管理器,可实现单个页面的进度回调,也可实现所有下载进度的监听.

4、可获取下载队列里和已完成下载的所有任务

5、可设置最大同时下载线程数

使用方法

下载方式有三种:

/**
 * 添加下载任务
 *
 * @param url       下载请求的网址
 * @param targetUrl 下载保存的位置
 */
DownLoadManager.getInstance(this).download(String url, String targetUrl);

/**
 * 添加下载任务
 *
 * @param url                     下载请求的网址
 * @param targetUrl               下载保存的位置
 * @param downloadResponseHandler 用来回调的接口
 */
DownLoadManager.getInstance(this).download(String url, String targetUrl, DownloadResponseHandler downloadResponseHandler);

/**
 * 添加下载任务
 *
 * @param downloadInfo            下载类
 * @param downloadResponseHandler 用来回调的接口
 */
DownLoadManager.getInstance(this).download(DownloadInfo downloadInfo, DownloadResponseHandler downloadResponseHandler)

监听下载进度

单个任务监听

DownloadResponseHandler回调

全局监听(eventbus实现,也可用广播等)

@Subscribe(threadMode = ThreadMode.BACKGROUND)
public void onMessageEvent(DownloadInfo info){
    //返回info对象(这是在子线程)
}

取消下载

DownLoadManager.getInstance(this).cancel(url);

取消全部下载

DownLoadManager.getInstance(this).cancelAll();

暂停下载

DownLoadManager.getInstance(this).pause(url);

暂停全部下载

DownLoadManager.getInstance(this).pauseAll();

设置同时下载请求数(默认为1)

DownLoadManager.getInstance(this).setMaxRequests(1);

得到下载队列(等待中,下载中和暂停的任务)

DownloadManager.getInstance(this).getDownloadInfos();

得到已完成队列(不校验文件是否存在或完整,如用户手动删除了源文件)

DownloadManager.getInstance(this).getCompleteInfos();

说明介绍

DownloadInfo类

private String url;//下载路径
private String targetUrl;//存储路径
private long total;//总大小
private long progress;//当前进度
private String fileName;//名称
private int downloadState;//下载状态

各个下载状态

public static final int DOWNLOAD_STATE_WAITING = 0x00;//等待
public static final int DOWNLOAD_STATE_DOWNLOADING = 0x01;//下载中
public static final int DOWNLOAD_STATE_PAUSE = 0x02;//暂停
public static final int DOWNLOAD_STATE_CANCLE = 0x03;//取消
public static final int DOWNLOAD_STATE_FINISH = 0x04;//完成
public static final int DOWNLOAD_STATE_FAIL = 0x05;//失败
public static final int DOWNLOAD_STATE_RESTART = 0x06;//重新下载

源码地址:https://github.com/cleveryang/DownLoadManager

上一篇 下一篇

猜你喜欢

热点阅读