引语
早上好,还是我猫咪,我的公众号「躲角落的猫咪」会推荐 GitHub 上好玩的项目,挖掘开源的价值,欢迎关注我,每周二、周四 7:45 打卡,不见不散。
在开发 Android 应用程序的大部分时间里,我们遇到了一个常见的用例,即在 Android 中下载文件并在进度对话框中显示进度,这里面难点是断点续传。
今天推荐一个开源库 PRDownloader,可以很容易地解决这个问题。PRDownloader 可用于下载任何类型的文件,如图像,视频,pdf,apk 等;支持在下载文件时暂停和继续;支持大文件下载;许多请求可以并行进行等。
PRDownloader 使用
首先,在 build.gradle 中添加它:
compile 'com.mindorks.android:prdownloader:0.5.0'
如果已经不存在,请不要忘记在清单中添加 Internet 权限:
<uses-permission android:name="android.permission.INTERNET" />
然后在 onCreate() 应用程序类的方法中初始化它:
PRDownloader.initialize(getApplicationContext());
通过一些自定义来初始化它
// Enabling database for resume support even after the application is killed:
PRDownloaderConfig config = PRDownloaderConfig.newBuilder()
.setDatabaseEnabled(true)
.build();
PRDownloader.initialize(getApplicationContext(), config);
// Setting timeout globally for the download network requests:
PRDownloaderConfig config = PRDownloaderConfig.newBuilder()
.setReadTimeout(30_000)
.setConnectTimeout(30_000)
.build();
PRDownloader.initialize(getApplicationContext(), config);
发出下载请求:
int downloadId = PRDownloader.download(url, dirPath, fileName)
.build()
.setOnStartOrResumeListener(new OnStartOrResumeListener() {
@Override
public void onStartOrResume() {
}
})
.setOnPauseListener(new OnPauseListener() {
@Override
public void onPause() {
}
})
.setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel() {
}
})
.setOnProgressListener(new OnProgressListener() {
@Override
public void onProgress(Progress progress) {
}
})
.start(new OnDownloadListener() {
@Override
public void onDownloadComplete() {
}
@Override
public void onError(Error error) {
}
});
它有一个回调 onProgress,我们获取下载进度,可用于显示进度对话框中的进度。
暂停下载请求
PRDownloader.pause(downloadId);
恢复下载请求
PRDownloader.resume(downloadId);
取消下载请求
// Cancel with the download id
PRDownloader.cancel(downloadId);
// The tag can be set to any request and then can be used to cancel the request
PRDownloader.cancel(TAG);
// Cancel all the requests
PRDownloader.cancelAll();
下载请求的状态
Status status = PRDownloader.getStatus(downloadId);
如果启用了数据库,则清理恢复的文件
// Method to clean up temporary resumed files which is older than the given dayPRDownloader.cleanUp(days);
源码地址
https://github.com/MindorksOpenSource/PRDownloader
免费获取安卓开发架构的资料(包括Fultter、高级UI、性能优化、架构师课程、 NDK、Kotlin、混合式开发(ReactNative+Weex)和一线互联网公司关于android面试的题目汇总可以加:936332305 / 链接:点击链接加入【安卓开发架构】
![](https://img.haomeiwen.com/i15234279/acd6bfb51b90e910.png)
网友评论