多线程断点下载详解及源码下载(一)

本项目完成的功能类似与迅雷等下载工具所实现的功能——实现多线程断点下载。 主要设计的技术有: 1、android中主线程与非主线程通信机制。 2、多线程的编程和管理。 3、android网络编程 4、自己设计实现设计模式-监听器模式 5、Activity、Service、数据库编程 6、android文件系统 7、缓存

博文链接: Android-多线程断点下载详解及源码下载(二) Android-多线程断点下载详解及源码下载(三) Android-多线程断点下载详解及源码下载(四)

一、服务器端 服务器端比较简单,核心就是提供一个相对比较大的文件以供android客户端下载使用。这里我使用MyEclipse工具建立一个Web工程。工程结构如下:

仅仅建立一个web工程,在根目录webroot下,有一个my.mp3的文件,这个文件就是客户端进行请求下载的文件。

建立成功之后,需要部署到服务器,这样外界才可以访问到。打开tomcat,添加部署工程,如图:

同样是在MyEclipse里面完成的,我这里把tomcat配置到了MyEclipse中,启动之后随便打开一个浏览器,在浏览器中输入网址:8080/ds/ 回车之后,浏览器界面如下:

这个是默认的index.jsp界面所显示的内容。 如果正确显示了这部分内容说明你的服务器端已经配置完成!!

我这里不详细讲述如何配置服务器了,这些工作大家自己搞一搞,不难,网上面也是一大堆。服务器端就说这么多。文章末尾有服务器端源码下载,大家下载之后直接部署到tomcat就可以直接使用了。

二、客户端 对于客户端开发就比较复杂了,客户端工程目录结构如下:

客户端代码我分了很多的包,主要在于实际项目中开发管理,符合规范。 在上面的图中,我大概给出了每个类的作用,下面给出UML类图以说明相互之间的关系:

这个类图并没有详细说明每个类的属性和方法,只是大概说明类与类之间的关系。由于本人也是初学UML类图,所以图中有什么画的不规范的地方,请大家海涵,多多指教!不胜感激!!

针对类图中的说明,我这里用文字说明类与类之间的关系: 1、主类Activity-MainActivity 主类使用布局文件,有两个按钮,,一个开启下载器进行下载按钮,一个是停止下载器下载的停止按钮。所以主类主要跟下载器有联系,并且下载器作为主类中的成员变量使用,所以主类MainActivity与下载器MultiThreadManager类是关联关系,如图所示使用单向箭头-单向关联。 2、IDownProgressing接口 这个类是一个接口,主要是主界面中有个文件下载的进度条,进度条需要边下载边更新进度值,通过这是这个接口给下载器,下载器重写该接口,实现数据回调,从而更新进度值。所以该类IDownProgressing与下载器MultiThreadManager是依赖的关系,MultiThreadManager依赖于接口对象。(注:依赖的表示应该是一个虚线的箭头,但是我是用StarUML这个软件画的类图,这个箭头不知道为什么不是虚线表示的。。有点郁闷,大家姑且看看看哈)。 3、下载器MultiThreadManager类 下载器主要开启线程池管理多个线程进行下载,必然跟多个线程有关系,那么下载器MultiThreadManager与线程DownTaskThread类就是一种聚合的关系,带菱形空心箭头所示。同时要实现断点下载,下载器要获取每个线程下载的长度,并更新到本地数据库中,保存每个线程已经下载的长度,其必然跟数据库的操作有关系,并且数据库的操作类DownDatabaseService类作为其成员变量存在,所以MultiThreadManager与DownDatabaseService是一种关联关系-单向关联。 4、数据库操作类DownDatabaseService DownDatabaseService类主要实现数据库的管理工作,增删改查四个功能,所以它必然依赖与DownDatabase类。 其他的两个类DownDatabase和DownTaskThread,就没有什么特别要说明的关系了。

下面给出客户端界面图:

下载中界面:

下载结束界面:

整个的布局文件也非常简单,也就不给出xml的布局文件了,主要是一个EditText,编辑下载地址,两个按钮–一个开始,一个停止。还有一个进度条和显示进度值的TextView,比较简单。

本篇主要讲述了一些原理性工作和准备工作,下篇开始讲述客户端代码的具体实现过程。

博文链接: Android-多线程断点下载详解及源码下载(二) Android-多线程断点下载详解及源码下载(三) Android-多线程断点下载详解及源码下载(四)

源码下载(服务器端和客户端代码)

启程了,人的智慧才得以发挥。

多线程断点下载详解及源码下载(一)

相关文章:

你感兴趣的文章:

标签云: