<strong>使用场景</strong>
apk应用内更新,其他中小文件的下载,断点续传下载等,先来看看效果图:
<br/>


<strong>简单方便的调用接口</strong>
调用者只要设置好下载路径、文件后缀,丢一个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() { @Override public void onUpdate(String apkUrl, String file,   int completeSize, int apkFileSize) {    //do your thing  }  @Override  public void onComplete(String file) {   //do your thing  }  @Override  public void onError(String apkUrl, int type, int state) {                //do your thing    }  });


如果你只关心使用,拿来就用,文章到这里不用往下看了,直接到我的<a href="https://github.com/liuguangli/AndroidFileDownloader">Github仓库下载源码</a>和例子吧。当然我很希望读者一起来理解下简单的实现原理。
<strong>设计与实现</strong>
多线程下载的实现,生产者消费者模式,对于设计实现层面的东西个人更喜欢用图说明,序列图如下:

<strong>FileDownloader:</strong>直接面向调用者,使用者只care文件的url,下载存储路径,下载进度状态,我们致力将对外接口封装的尽量简单方便,所以仅仅提供一个addFile(),传入url,文件路径,回调监听器。
<strong>DownloaderListener:</strong>下载进度或状态监听接口,调用者实现回调方法处理进度状态。
CreatorThread:生产者线程,这个线程负责通过url获取文件大小,再将文件分片组装成下载任务段。
TaskList: 任务队列,生产者线程可以往里面增加任务段,消费者线程可以从里面取出一段下载任务,这个过程是同步的。
DownloadThread:消费者线程,负责消费任务队列里面的任务段。


GitHub账号:<a href="https://github.com/liuguangli/">https://github.com/liuguangli</a>,欢迎fork,贡献你的idea,一起做好每一件小事。

个人博客:www.liuguangli.win

更多相关文章

  1. Android初级教程理论知识(第八章网络编程二)
  2. Android(安卓)HDecoration项目so库导出和调用
  3. [毕业设计-基于android的手机网盘的设计与实现] java中文件的soc
  4. Android(安卓)自己实现 NavigationView
  5. Android经常使用UI组件 - TextView
  6. Tinker热修复简单接入
  7. android 下载保存图片
  8. Android(安卓)XMl文件存储及其解析
  9. 如何在xml中直接添加view点击监听(参考rayleung博客)

随机推荐

  1. Android(安卓)linux PWM驱动(s5pv210)
  2. Android之Dialog集合
  3. Android(安卓)ListView addScrapView Arr
  4. android 照相以及关于自动生成的图片分辨
  5. android volley 发送 POST 请求
  6. 选择图文表
  7. ffmepg x264 fdk-aac android ndk全CPU编
  8. Android(安卓)屏幕截图 代码
  9. Android(安卓)上下滚动的新闻效果
  10. android笔记