基于Okhttp3, 结合Builder模式,加入多种设计模式,实现的android平台多线程下载利器!
功能
多线程多任务下载功能
基本的断点续传
下载数据持久,程序退出仍可以保留
支持视频,小说,文件,应用,文本多模式下载
支持通知栏下载进度同步更新
支持静默和非静默下载(静默一般用在插件下载需求中)
支持多种参数定制,文件名,存储路径定制功能
智能进行优先级下载,wifi自动恢复失败任务
提供进度回调,可实现自定义的操作效果
图片太大了 微信无法显示,来张我家妹子代替吧,不过瘾点击原文查看吧。
实践
依赖
gradle依赖远程maven包:
compile 'com.tamic.fastdownloader:Android-FastDownloader:1.0.0'
初始化
Application中初始化下载:
@Override
public void onCreate() {
super.onCreate();
DownloadInit.initDownload(getApplicationContext());
}
调用
simple 1:
new Download.Builder()
.url(url)
.build(this)
.start();
只要设置下载Url即可,文件名下载库会自动抓取, 默认优先级为中等,回调UI下载自动处理,默认的保存路径为:你的apk包名+ /tamic/downloads/ 下.
simple 2:
new Download.Builder()
.url("this is url")//下载url
.priority(Priority.HIGH)
.savepath("保存路径")
.isImplicit(false)//是否显示UI
.channel(3000)//渠道可选
.client(DLClientFactory.createClient(Type.NORMAL, this))//下载器
.setCallback(new DLCallback())//下载回调
.build(this)
.start();
这种配置 可定制下载的文件名,存储路径,优先级,以及渠道,是否显示通知栏更新UI等,并且回调可以自我实现,譬如下载完成后显示安装对话框等. 其实在初始化设下载库时可以指定最大下载数量,优先级。
高级API
重新开始下载
通过reStart()对已有的下载任务开始强制重新下载,将会删除已下载的缓存文件。
new Download.Builder()
.url(url)
.build(this)
.reStart();
下载Tag
可以通过tag(String) 设置下载ID
new Download.Builder()
.tag("key")
.url(url)
.build(this)
.Start();
如果不设置Tag, 默认:Url+当前系统时间, 如果你想获取默认的tag可以通过下面的列子,有了这个Tag你可以做暂停,取消等操作,感觉是不是想rxjava的那个flowable呢
String tag = new Download.Builder()
.url(url)
.client(DLClientFactory.createClient(NORMAL, this))
.build(this)
.start();
自定义回调
对某个下载任务进行操作可以单独加回调处理,使用setCallback,如果忽略不设置,系统则默认不处理。
new Download.Builder()
.setCallback(new IDLCallback() {
@Override
public void onStart(String key, long fileLength, long downloaded, String savePath, String filenNme) {
}
@Override
public void onSuccess(String key, long fileLength, long downloaded, String savePath, String filenNme, long aSpeed, String aAppiconName) {
}
@Override
public void onAppSuccess(String key, long fileLength, long downloaded, String savePath, String filenNme, long aSpeed, String aAppiconName, int downloadType, int appType) {
}
@Override
public void onFail(String key, long downloaded, String savePath, String filenNme, String aErrinfo) {
}
@Override
public void onCancel(String key, long fileLength, long downloaded, String savePath, String filenNme) {
}
@Override
public void onPause(String key, long fileLength, long downloaded, String savePath, String filenNme) {
}
@Override
public void onDownloading(String key, long fileLength, long downloadLength, long speed, String fileName, int downloadType) {
}
@Override
public void onRefresh(List infos) {
}
})
上面的回调包含了开始,下载,暂停 取消,完成,可以刷新等,有了这个回调接口你可以随意处理扩展你的业务,赶快下载试试吧!
项目地址
https://github.com/Tamicer/FastDownloader