引入
compile 'org.wlf:FileDownloader:0.3.1'
application的onCreate()中初始化FileDownloader
// 创建Builder
FileDownloadConfiguration.Builder builder = new FileDownloadConfiguration.Builder(this);
// 配置Builder
// 配置下载文件保存的文件夹
builder.configFileDownloadDir(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator +
"FileDownloader");
// 配置同时下载任务数量,如果不配置默认为2
builder.configDownloadTaskSize(3);
// 配置失败时尝试重试的次数,如果不配置默认为0不尝试
builder.configRetryDownloadTimes(5);
// 开启调试模式,方便查看日志等调试相关,如果不配置默认不开启
builder.configDebugMode(true);
// 配置连接网络超时时间,如果不配置默认为15秒
builder.configConnectTimeout(25000);// 25秒
// 使用配置文件初始化FileDownloader
FileDownloadConfiguration configuration = builder.build();
FileDownloader.init(configuration);
**注册监听器
不需要的时候取消注册 也可以不注册**
private OnFileDownloadStatusListener mOnFileDownloadStatusListener = new OnSimpleFileDownloadStatusListener() {
@Override
public void onFileDownloadStatusRetrying(DownloadFileInfo downloadFileInfo, int retryTimes) {
// 正在重试下载(如果你配置了重试次数,当一旦下载失败时会尝试重试下载),retryTimes是当前第几次重试
}
@Override
public void onFileDownloadStatusWaiting(DownloadFileInfo downloadFileInfo) {
// 等待下载(等待其它任务执行完成,或者FileDownloader在忙别的操作)
}
@Override
public void onFileDownloadStatusPreparing(DownloadFileInfo downloadFileInfo) {
// 准备中(即,正在连接资源)
}
@Override
public void onFileDownloadStatusPrepared(DownloadFileInfo downloadFileInfo) {
// 已准备好(即,已经连接到了资源)
}
@Override
public void onFileDownloadStatusDownloading(DownloadFileInfo downloadFileInfo, float downloadSpeed, long
remainingTime) {
// 正在下载,downloadSpeed为当前下载速度,单位KB/s,remainingTime为预估的剩余时间,单位秒
}
@Override
public void onFileDownloadStatusPaused(DownloadFileInfo downloadFileInfo) {
// 下载已被暂停
}
@Override
public void onFileDownloadStatusCompleted(DownloadFileInfo downloadFileInfo) {
// 下载完成(整个文件已经全部下载完成)
}
@Override
public void onFileDownloadStatusFailed(String url, DownloadFileInfo downloadFileInfo, FileDownloadStatusFailReason failReason) {
// 下载失败了,详细查看失败原因failReason,有些失败原因你可能必须关心
String failType = failReason.getType();
String failUrl = failReason.getUrl();// 或:failUrl = url,url和failReason.getType()会是一样的
if (FileDownloadStatusFailReason.TYPE_URL_ILLEGAL.equals(failType)) {
// 下载failUrl时出现url错误
} else if (FileDownloadStatusFailReason.TYPE_STORAGE_SPACE_IS_FULL.equals(failType)) {
// 下载failUrl时出现本地存储空间不足
} else if (FileDownloadStatusFailReason.TYPE_NETWORK_DENIED.equals(failType)) {
// 下载failUrl时出现无法访问网络
} else if (FileDownloadStatusFailReason.TYPE_NETWORK_TIMEOUT.equals(failType)) {
// 下载failUrl时出现连接超时
} else {
// 更多错误....
}
// 查看详细异常信息
Throwable failCause = failReason.getCause();// 或:failReason.getOriginalCause()
// 查看异常描述信息
String failMsg = failReason.getMessage();// 或:failReason.getOriginalCause().getMessage()
}
};
// 注册监听器
FileDownloader.registerDownloadStatusListener(mOnFileDownloadStatusListener);
注册文件数据变化监听器 如 文件不存在,被删除,状态变化等
private OnDownloadFileChangeListener mOnDownloadFileChangeListener = new OnDownloadFileChangeListener() {
@Override
public void onDownloadFileCreated(DownloadFileInfo downloadFileInfo) { // 一个新下载文件被创建,也许你需要同步你自己的数据存储,比如在你的业务数据库中增加一条记录 } @Override public void onDownloadFileUpdated(DownloadFileInfo downloadFileInfo, Type type) { // 一个下载文件被更新,也许你需要同步你自己的数据存储,比如在你的业务数据库中更新一条记录 } @Override public void onDownloadFileDeleted(DownloadFileInfo downloadFileInfo) { // 一个下载文件被删除,也许你需要同步你自己的数据存储,比如在你的业务数据库中删除一条记录 }};
// 注册监听器
FileDownloader.registerDownloadFileChangeListener(mOnDownloadFileChangeListener);
下载文件
// 如果文件没被下载过 将创建并开启下载
// 否则继续下载 自动会断点续传(如果服务器无法支持断点续传将从头开始下载)
FileDownloader.start(url);
创建一个自定义下载路径和文件名的下载
FileDownloader.detect(url, new OnDetectBigUrlFileListener() {
@Override
public void onDetectNewDownloadFile(String url, String fileName, String saveDir, long fileSize) {
// 如果有必要,可以改变文件名称fileName和下载保存的目录saveDir
FileDownloader.createAndStart(url, newFileDir, newFileName);
}
@Override
public void onDetectUrlFileExist(String url) {
// 继续下载,自动会断点续传(如果服务器无法支持断点续传将从头开始下载)
FileDownloader.start(url);
}
@Override
public void onDetectUrlFileFailed(String url, DetectBigUrlFileFailReason failReason) {
// 探测一个网络文件失败了,具体查看failReason
}
});
暂停下载
// 暂停单个下载任务
FileDownloader.pause(url);
// 暂停多个下载任务 list集合
FileDownloader.pause(urls);
// 暂停所有下载任务
FileDownloader.pauseAll();
继续下载
// 继续下载,自动会断点续传(如果服务器无法支持断点续传将从头开始下载)
FileDownloader.reStart(url);
// 继续下载 list集合
FileDownloader.reStart(urls);
移动下载文件
// 移动单个下载文件到新文件夹中
FileDownloader.move(url, newDirPath, mOnMoveDownloadFileListener);
// 移动多个下载文件到新文件夹中 list集合
FileDownloader.move(urls, newDirPath, mOnMoveDownloadFilesListener);
删除下载
// 删除单个下载文件
FileDownloader.delete(url, true, mOnDeleteDownloadFileListener);
// 删除多个下载文件 list集合
FileDownloader.delete(urls, true, mOnDeleteDownloadFilesListener);
重命名下载文件
// 重命名一个下载文件
FileDownloader.rename(url, newName, true, mOnRenameDownloadFileListener);
取消监听
// 取消注册下载状态监听器(一般在fragment或activity的onDestroy方法中取消注册)
FileDownloader.unregisterDownloadStatusListener(mOnFileDownloadStatusListener);
// 取消注册文件数据变化监听器
FileDownloader.unregisterDownloadFileChangeListener(mOnDownloadFileChangeListener);