PRDownloader:Android 文件下载,暂停续传一句话搞定

📅 2026/6/28 4:26:54
PRDownloader:Android 文件下载,暂停续传一句话搞定
文章目录PRDownloaderAndroid 文件下载暂停续传一句话搞定1、 解决什么问题2、 功能清单3、 怎么用4、 发起下载5、 适合什么场景PRDownloaderAndroid 文件下载暂停续传一句话搞定PRDownloader 在 GitHub 上有 3,384 Star。这是一个 Android 文件下载库专门解决下载过程中的暂停和恢复问题。支持大文件、并行下载、断点续传API 调用链式构建。1、 解决什么问题Android 开发里做文件下载原生 HttpURLConnection 能用但写起来繁琐。想加暂停续传要自己管理临时文件和 Range 请求头。想做并行下载要手写线程池调度。想监听进度要手动计算已下载字节数。这些功能散落在各个项目里重复造轮子。PRDownloader 把这些全封装了一行代码发起下载一个 ID 控制暂停恢复取消。遇到网络中断时启用数据库存储就能实现应用重启后的续传。2、 功能清单PRDownloader 支持下载任意文件类型图片、视频、PDF、APK 都可以。暂停和恢复是核心能力通过 downloadId 控制。大文件下载没问题支持自定义超时。并行发起多个请求互不阻塞。回调覆盖 onStart、onProgress、onPause、onCancel、onComplete、onError全生命周期都能监听。支持按 ID 或按 TAG 取消请求也可以一次取消所有。内置数据库存储下载状态应用被杀后仍可续传。清理过期临时文件也有现成方法。3、 怎么用在 settings.gradle 加 JitPack 仓库maven { url https://jitpack.io }build.gradle 加依赖implementation com.github.amitshekhariitbhu:PRDownloader:1.0.2AndroidManifest 加网络权限然后在 Application 的 onCreate 里初始化PRDownloader.initialize(getApplicationContext());需要断点续传持久化开启数据库支持PRDownloaderConfigconfigPRDownloaderConfig.newBuilder().setDatabaseEnabled(true).build();PRDownloader.initialize(getApplicationContext(),config);也可以全局设置超时时间PRDownloaderConfigconfigPRDownloaderConfig.newBuilder().setReadTimeout(30_000).setConnectTimeout(30_000).build();PRDownloader.initialize(getApplicationContext(),config);4、 发起下载链式构建请求各阶段回调按需设置intdownloadIdPRDownloader.download(url,dirPath,fileName).build().setOnStartOrResumeListener(()-{}).setOnPauseListener(()-{}).setOnCancelListener(()-{}).setOnProgressListener(progress-{}).start(newOnDownloadListener(){OverridepublicvoidonDownloadComplete(){}OverridepublicvoidonError(Errorerror){}});暂停、恢复、取消都只需要一行PRDownloader.pause(downloadId);PRDownloader.resume(downloadId);PRDownloader.cancel(downloadId);PRDownloader.cancelAll();查询下载状态和清理临时文件StatusstatusPRDownloader.getStatus(downloadId);PRDownloader.cleanUp(days);5、 适合什么场景应用内更新 APK用户可以暂停下次继续下视频类 App 缓存离线内容网络不好时暂停不丢进度批量下载图片或文档多个任务并行跑任何需要下载进度回调和生命周期管理的 Android 项目应用内更新 APK用户可以暂停下次继续下视频类 App 缓存离线内容网络不好时暂停不丢进度批量下载图片或文档多个任务并行跑任何需要下载进度回调和生命周期管理的 Android 项目