# OkDownload **Repository Path**: dingfeng/OkDownload ## Basic Information - **Project Name**: OkDownload - **Description**: 基于OkHttp3实现的一个下载器,支持多任务下载、断点续传等功能。 - **Primary Language**: Android - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 20 - **Forks**: 10 - **Created**: 2017-08-29 - **Last Updated**: 2023-11-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OkDownload ### 简介 基于 OkHttp3 实现的下载器,支持多任务并发下载、断点续传、轻量级下载等基本功能 ### 添加权限 ``` ``` ### 引入项目 ```groovy // 项目 build.gradle maven { url 'https://dl.bintray.com/dingfengnupt/maven' } // App 的 build.gradle implementation 'com.duff.okdownload:okdownload:1.1.0' ``` ### 项目集成 #### 1. 配置项 ```java public class DemoApplication extends Application { @Override public void onCreate() { super.onCreate(); // 其他代码 DownloadConfiguration.Builder builder = new DownloadConfiguration.Builder() .dbName("download_demo.db") .debug(true) .tag("OkDownload"); DownloadConfiguration.init(builder); } } ``` #### 2.单任务下载 ``` OkDownload okDownload = new OkDownload.Builder() .url(url) .tag("test") .path(path) .build(); okDownload.download(new OnDownloadListener() { @Override public void onStart(String url) { Log.d(TAG, "onStart ... "); } @Override public void onError(String url, Exception e) { Log.d(TAG, "onError ... " + e.getMessage()); } @Override public void onProgress(String url, long downloadedBytes, long totalBytes, File file) { Log.d(TAG, "onProgress ... " + downloadedBytes + "/" + totalBytes); } @Override public void onSuccess(String url, File file) { Log.d(TAG, "onSuccess ... "); } }); ``` 或者 ``` OkDownload.download(url, path, new OnDownloadListener() { @Override public void onStart(String url) { Log.d(TAG, "onStart ... "); } @Override public void onError(String url, Exception e) { Log.d(TAG, "onError ... " + e.getMessage()); } @Override public void onProgress(String url, long downloadedBytes, long totalBytes, File file) { Log.d(TAG, "onProgress ... "); } @Override public void onSuccess(String url, File file) { Log.d(TAG, "onSuccess ... "); } }); ``` #### 3.轻量级下载 ``` LiteDownload.download(url, path, new LiteDownloadListener() { @Override public void onError(Exception e) { } @Override public void onSuccess(File file) { } }); ``` #### 4.多任务下载,支持断点续传 ``` DownloadInfo[] downloadInfos = new DownloadInfo[urls.length]; for (int i = 0; i < urls.length; i++) { DownloadInfo info = new DownloadInfo(); String url = urls[i]; String fileName = Utils.getFileName(url); String filePath = DOWNLOAD_DIR + fileName; info.setUrl(urls[i]); info.setTag(fileName); info.setPath(filePath); info.setTaskName(fileName); downloadInfos[i] = info; } DownloadManager.instance(this).add(callback, downloadInfos); ``` ### 状态监听 #### 注册监听 ``` DownloadManager.instance(this).registerDownloadObserver(mDownloadObserver); ``` #### 取消监听 ``` DownloadManager.instance(this).unRegisterDownloadObserver(mDownloadObserver); ``` ### 常用API - 添加任务 ``` DownloadManager.instance(this).add(...); ``` - 暂停任务 ``` DownloadManager.instance(this).pause(...); ``` - 恢复任务 ``` DownloadManager.instance(this).resume(...); ``` - 删除任务 ``` DownloadManager.instance(this).delete(...); ``` - 查询任务 ``` DownloadManager.instance(this).query(...); ``` - 并行任务数(建议用默认值1) ``` DownloadManager.instance(this).setMaxRunningTask(3); ```