博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个Android项目多线程下载模块开源库:AndroidFileDownloader
阅读量:6115 次
发布时间:2019-06-21

本文共 1111 字,大约阅读时间需要 3 分钟。

使用场景

apk应用内更新,其他中小文件的下载,断点续传下载等,先来看看效果图:

简单方便的调用接口

调用者只要设置好下载路径、文件后缀,丢一个url即可开始下载,并且可以根据需要监听进度,例如:

FileDownloader mDownloader = FileDownloader.getInstance(getApplication());mDownloader.setExtend(".apk");mDownloader.setFilePath(Environment.getExternalStorageDirectory() + "/apk/");mDownloader.addFile("http://zhuzher.vanke.com/uip/zhuzher.apk");mDownloader.setDownloadObserver(new DownloadObserver() {@Overridepublic void onUpdate(String apkUrl, String file,int completeSize, int apkFileSize) {//do your thing}@Overridepublic void onComplete(String file) {//do your thing}@Overridepublic void onError(String apkUrl, int type, int state) {//do your thing}});

如果你只关心使用,拿来就用,文章到这里不用往下看了,直接到我的和例子吧。当然我很希望读者一起来理解下简单的实现原理。
设计与实现
多线程下载的实现,生产者消费者模式,对于设计实现层面的东西个人更喜欢用图说明,序列图如下:
FileDownloader:直接面向调用者,使用者只care文件的url,下载存储路径,下载进度状态,我们致力将对外接口封装的尽量简单方便,所以仅仅提供一个addFile() 方法,传入url,文件路径,回调监听器。
DownloaderListener:下载进度或状态监听接口,调用者实现回调方法处理进度状态。
CreatorThread:生产者线程,这个线程通过url获取文件大小,再将文件分片组装成下载任务段。
TaskList: 任务队列,生产者线程可以往里面增加任务段,消费者线程可以从里面取出一段下载任务,这个过程是同步的。
DownloadThread:消费者线程,负责消费任务队列里面的任务段。

GitHub账号:,欢迎fork,贡献你的idea,一起做好每一件小事。

转载地址:http://zwnka.baihongyu.com/

你可能感兴趣的文章
oracle归档日志增长过快处理方法
查看>>
有趣的数学书籍
查看>>
teamviewer 卸载干净
查看>>
多线程设计模式
查看>>
解读自定义UICollectionViewLayout--感动了我自己
查看>>
SqlServer作业指定目标服务器
查看>>
UnrealEngine4.5 BluePrint初始化中遇到编译警告的解决办法
查看>>
User implements HttpSessionBindingListener
查看>>
抽象工厂方法
查看>>
ubuntu apt-get 安装 lnmp
查看>>
焊盘 往同一个方向增加 固定的长度方法 总结
查看>>
eclipse的maven、Scala环境搭建
查看>>
架构师之路(一)- 什么是软件架构
查看>>
jquery的冒泡和默认行为
查看>>
USACO 土地购买
查看>>
【原创】远景能源面试--一面
查看>>
B1010.一元多项式求导(25)
查看>>
10、程序员和编译器之间的关系
查看>>
前端学习之正则表达式
查看>>
配置 RAILS FOR JRUBY1.7.4
查看>>