一个Android项目多线程下载模块开源库:AndroidFileDownloader

使用场景
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() {
@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
}
});

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

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

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

时间: 2024-10-02 09:51:15

一个Android项目多线程下载模块开源库:AndroidFileDownloader的相关文章

Android版多线程下载 仿下载助手(最新)_Android

首先声明一点: 这里的多线程下载并不是指多个线程下载一个 文件,而是每个线程负责一个文件,今天给大家分享一个多线程下载的 例子.先看一下效果,点击下载开始下载,同时显示下载进度,下载完成,变成程安装,点击安装提示安装应用. 界面效果图: 线程池ThreadPoolExecutor ,先简单学习下这个线程池的使用 /** * Parameters: corePoolSize the number of threads to keep in the pool, even if they are id

Android官方入门文档[1]创建一个Android项目

Android官方入门文档[1]创建一个Android项目   创建一个Android项目   这节课教你1.创建与Android Studio中的一个项目2.创建使用命令行工具项目 你也应该阅读•管理项目 Creating an Android Project This lesson teaches you to1.Create a Project with Android Studio2.Create a Project with Command Line Tools You should

创建你的第一个Android项目

  随着移动互联网的迅速发展,前端的概念已发生很大的变化,已不仅仅局限在网页端.而Android系统作为智能机市场的老大,作为前端开 发工程师,非常有必要了解和学习.但面对众多学习资料,站在前端开发工程师的角色,怎样挑选出合适的路进行快速学习,而不必浪费大量时间去摸索,该系列文 章希望能帮助到小伙伴们. 文章会挑选几个实际的例子,贯穿在整个系列中,涉及到Java.Android.程序设计等多方面知识,力求让大家快速掌握.俗话说,工欲善其事,必先利其器,系列的第一篇就从Window系统下Andro

《Android应用开发从入门到精通》——第2章,第2.3节创建第一个Android项目

2.3 创建第一个Android项目 Android应用开发从入门到精通 2.3.1 创建新项目 打开Eclipse,选择 File→New→Android Application Project.如果没有Android Application Project这一条,这时可以选择Other找到Android Application Project. 进入New Project对话框,分别进行如下设置,如图2.7所示. 词条解释如下. Project Name 包含这个项目的资料夹的名称. App

用Eclipse搭建Android开发环境并创建第一个Android项目(eclipse+android sdk)_Android

一.搭建Android开发环境 准备工作:下载Eclipse.JDK.Android SDK.ADT插件 1.安装和配置JAVA开发环境:   ①把准备好的Eclipse和JDK安装到本机上(最好安装在全英文路径下),并给JDK配置环境变量,其中JDK的变量值为JDK安装路径的根目录,如我的为:D:\Program Files\Java\jdk1.7.0_02: ②打开命令提示符(cmd),输入java -version命令,显示如下图则说明JAVA环境变量已经配置好了. 2.安装ADT插件:

Android实现多线程下载文件的方法_Android

本文实例讲述了Android实现多线程下载文件的方法.分享给大家供大家参考.具体如下: 多线程下载大概思路就是通过Range 属性实现文件分段,然后用RandomAccessFile 来读写文件,最终合并为一个文件 首先看下效果图: 创建工程 ThreadDemo 首先布局文件 threaddemo.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo

Android实现多线程下载文件的方法

本文实例讲述了Android实现多线程下载文件的方法.分享给大家供大家参考.具体如下: 多线程下载大概思路就是通过Range 属性实现文件分段,然后用RandomAccessFile 来读写文件,最终合并为一个文件 首先看下效果图: 创建工程 ThreadDemo 首先布局文件 threaddemo.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo

用Eclipse搭建Android开发环境并创建第一个Android项目(eclipse+android sdk)

一.搭建Android开发环境 准备工作:下载Eclipse.JDK.Android SDK.ADT插件 1.安装和配置JAVA开发环境: ①把准备好的Eclipse和JDK安装到本机上(最好安装在全英文路径下),并给JDK配置环境变量,其中JDK的变量值为JDK安装路径的根目录,如我的为:D:\Program Files\Java\jdk1.7.0_02: ②打开命令提示符(cmd),输入java -version命令,显示如下图则说明JAVA环境变量已经配置好了. 2.安装ADT插件: ①打

求解决-导入一个android项目运行后出现界面混乱怎么解决?

问题描述 导入一个android项目运行后出现界面混乱怎么解决? 解决方案 看着好像是在低分辨率的模拟器上用了只有高分辨率图片的项目,看看资源图片里面的资源有没有你这个模拟器对应的图片