已阅读5页,还剩58页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
AbstractUDC:学校代码:中文图书分类号:学号:密级:北京工业大学本科生毕业论文题 目:基于Android平台多功能下载软件的设计与实现英文题目:DESIGN AND IMPLEMENTATION OF THE MULTIFUNCTIONAL DOWNLOAD SOFTWARE BASED ON ANDROID PLATFORM论文作者:张凯林学 科:软件工程研究方向:软件工程申请学位:学士学位指导教师:谌云莉(副)教授 所在单位:软件学院答辩日期:2014年5月27日授予学位单位:北京工业大学57摘要随着工信部加快实施宽带中国、智慧城市的战略,中国互联网的宽带接入速率将会进一步提高。截至2014年4月,我国4M以上宽带用户占比突破80%,光纤入户也在稳步推进当中。移动互联网方面,截至2014年一季度,我国共有4.48亿3G/4G移动宽带用户,这个数字还在不断增长中。正是在这样的大背景下,用户对从互联网资源的需求不断地增加,对互联网下载速度的要求也在不断地提高。相较之下,Android平台内置的下载应用却下载缓慢、容易崩溃,有悖用户的实际需求。因此,开发一款Android平台下的多功能下载软件具有实践和创新意义。通过多功能下载软件,在下载速度缓慢时,用户可以使用多线程下载来大幅提高下载速度;在下载文件较大时,用户可以使用断点续传功能保存下载进度,以便下次继续下载;在下载内容有意思时,用户可以通过分享功能蓝牙分享给周围好友或联网分享给在线好友;在下载内容很重要时,用户可以通过备份功能将资料备份到网络硬盘中。总之,多功能下载软件会使用户从互联网下载资源更加地方便顺畅。本文将从多功能下载软件的需求分析、系统详细设计与实现、算法设计等方便进行阐述,最后还会对应用程序的实际运行效果进行深入地分析。关键词:Android;Java;多功能下载;多线程;断点续传AbstractWith the strategy of broadband China and wisdom city proposed by MIIT(Ministry of Industry and Information Technology), China broadband internet access rates will increased further. As of April 2014, more than 80 percent people using 4m broadband or faster in China. Optical fiber service is also in development. In Mobile Internet, as of first-quarter 2014, there are 448 million 3G or 4G users, the number is still growing.In this context, the requirement of getting resources from internet is growing, the demand of downloading speed is growing. In contrast, the performance of download app in Android is not good enough, which against users requirements. So, develop a new multifunctional download application in Android has important significance.By our multifunctional download application, when download speed is slow, you can use multithreading download to increase your speed. When you download a huge file, you can use breakpoint to save your download progress, so that you can restart you download in the future. When you download an interest file, you can share it to your friends around you by Bluetooth or friends online by internet. When your download file is important, you can backup your file on the Internet. In a word, multifunctional download application will make it more convenient to download from the internet.This article will elaborate the technical issues relevant to this Android application as well as its detail development methods. Finally I will deep analysis of the result of this Android application.Key words: Andorid, Java, multifunctional download application, multithreading, Resume broken downloads目录目录摘要IIIAbstractIV第1章 绪论11.1开发背景11.2项目内容31.3项目意义31.4论文组织结构4第2章 相关技术概述52.1 多功能下载软件系统架构及相关技术概述52.2 Java语言62.3 Android应用程序开发72.3.1 Android系统架构72.3.2 创建Android应用程序102.3.3所需组件132.4 Http协议182.5 FTP协议192.6 多线程下载技术212.7 断点续传技术22第3章 多功能下载软件需求分析233.1多功能下载软件系统目标233.2功能性需求233.2.1 用户界面需求233.2.2 业务功能需求233.3非功能性需求243.3.1稳定性243.3.2易用性243.3.3性能需求253.3.4配置需求25第4章 多功能下载软件系统设计274.1 系统总体设计274.2 数据结构设计274.3.1 下载任务数据结构274.3.2 已下载任务数据结构284.3 界面原形设计29第5章 多功能下载软件实现315.1多线程下载的算法实现315.2断点续传的算法实现355.3好友分享、备份网盘功能的算法实现365.4文件结构395.5多功能下载软件功能展示405.5.1 下载文件405.5.2 任务详情415.5.3 查看已下载文件425.5.4 分享、备份功能445.6性能对比47结论51致谢53参考文献55第1章 绪论第1章 绪论1.1 开发背景Android和iOS这两大系统之争由来已久,但是从市场份额来说,安卓系统的统治地位在绝大部分国家是难以被iOS撼动的。根据美国Kantar WorldpanelComtech发布的最新数据,2014年第一季度Android的份额则上升了8.1%,达到80%。而iOS仅为17.9%,同比去年下降5.4%。图1-1 各手机操作系统市场份额占有表在美国智能手机市场,苹果iOS的市场份额相比去年同样不景气,下降了7.8%,仅为35.9%。而Android的份额则是景气上扬,同比增长了8%,达到57.6%;其他OS方面,微软的Windows Phone名列第三,份额为5.3%,下降了0.3%;第四名的黑莓份额仅剩0.7%。Android在中国智能手机市场的统治地位就更加明显了。第一季度该系统拿下80%的份额,同比增加8.1个百分点。与此同时iOS则同比下降了5.4个百分点,至17.9%。两个系统相加,已经接近整个市场的98%,可见其他系统的份额多么微弱。苹果牵手中国移动并没有拉升iPhone市场份额,低价Android机的“泛滥”应该是主要原因。图1-2 Android 4.4 KitKat市场占有率趋势图上图为谷歌今天最新发布的安卓系统增长率报告。和上一次的报告一样,安卓4.4 KitKat系统的市场份额又一次显著提高。同上一个月相比,该系统的市场占有率提高了37%。据谷歌预测,安卓4.4 KitKat系统,已经被安装在了8.5%的已激活安卓设备上。而上个月,这一数字仅为5.3%。随着KitKat系统份额的增长,其他版本安卓系统(Jelly Bean、Ice Cream Sandwich、Gingerbred与Froyo等)的份额均相应下降。图1-3 Android各版本市场占有率分布图图1-4 Android各版本市场占有率分布图从图中我们可以看出,更多的手机和平板依旧停留在果冻豆上,占比高达60.8%,这其中包括了13.4%的Android 4.0、33.5%的Android 4.1和8.5%的Android 4.3,其中Android 4.2版本用户略有上涨,其他几个版本均在下滑状态,占有率最少的则是Android 2.3版本用户,仅剩0.1%。1.2 项目内容本文主要研究与讨论基于Android平台多功能下载软件的设计与实现。该项目主要有以下内容:1. 该项目针对Android手机系统。2. 有各个功能界面,包括主菜单界面以及各个主要分支功能界面。3. 基本功能:包括单线程下载、多线程下载、断点续传、查看当前下载速度、查看剩余下载时间、查看正在下载的文件和已经下载的文件等。4. 扩展功能:定期自动删除下载的文件、下载文件自动分类(按文件大小、类型、下载时间等划分)、下载完成后提示打开等。5. 附加功能:好友之间可以通过蓝牙或WIFI分享文件、用户可以将下载好的文件备份到网盘(本项目选择使用百度云网盘)中。1.3 项目意义随着我国互联网宽带速度不断地提高,用户对从互联网资源的需求也在不断地增加,对互联网下载速度的要求更是日益提高。相较之下,Android平台内置的下载应用却下载缓慢、容易崩溃,有悖用户的实际需求。因此,开发一款Android平台下的多功能下载软件具有实践和创新意义。通过多功能下载软件,在下载速度缓慢时,用户可以使用多线程下载来大幅提高下载速度;在下载文件较大时,用户可以使用断点续传功能保存下载进度,以便下次继续下载;在下载内容有意思时,用户可以通过分享功能蓝牙分享给周围好友或联网分享给在线好友;在下载内容很重要时,用户可以通过备份功能将资料备份到网络硬盘中。总之,多功能下载软件会使用户从互联网下载资源更加地方便顺畅。1.4 论文组织结构本文分为绪论、相关技术、多功能下载软件需求分析、多功能下载软件系统设计、多功能下载软件实现、多功能下载软件使用详解共六部分。由浅入深的逐步介绍了本应用的开发背景、技术背景、具体实现方法及项目成果展示。第一章绪论,即本章节。介绍了课题背景,课题研究内容及其意义。第二章相关技术。该章节主要介绍了多功能下载软件开发需要用到的技术,包括开发环境、使用语言、通信协议等。第三章多功能下载软件需求分析。该章节中从产品目标、功能性需求、非功能性需求三个方面进行讨论。第四章多功能下载软件系统设计。该章节中介绍了应用程序的系统具体设计。第五章多功能下载软件实现。本章详细介绍了多功能下载软件的具体实现方法以及多功能下载软件功能展示,从各方面具体展示了多功能下载软件的使用流程。第2章相关技术概述第2章 相关技术概述2.1 多功能下载软件系统架构及相关技术概述多功能下载软件涉及多线程下载、断点续传、在线分享、备份网盘等技术,整体架构如图2-1所示。当用户创建一个下载任务时,首先根据用户输入的URL地址访问资源所在服务器获取文件名、文件大小等相关信息。完成信息获取后,多功能下载软件根据用户设置的线程数,进行该资源的多线程下载任务。当用户因为某些原因不能继续下载时,可以暂停该下载任务并退出多功能下载软件,系统会自动保存用户当前的下载进度,在下次开启多功能下载软件时,用户可以继续未完成的下载任务。图2-1 多功能下载软件整体架构图在文件下载完成时,用户可以对已下载的文件按文件名、文件类型、文件大小进行排序,可以即时查看或者删除已下载的文件。当用户觉得下载的文件很有意思,想要分享给好友的时候,可以在分享功能中使用蓝牙分享给周围好友或者使用网络分享给在线好友。当用户下载的文件很重要时,可以通过备份功能备份到在线网盘中,防止数据的遗失。系统中所涉及的服务器通信、多线程下载、断点续传等技术将会在本章后续的内容中进行深入细致的介绍,其中的算法原理将会在第四章设计与实现中进行详尽的分析。2.2 Java语言Java是由Sun Microsystems公司于 1995年5月推出的Java面向对象程序设计语言(以下简称Java语言)和Java平台的总称。由James Gosling和同事们共同研发,并在1995年正式推出。Java最初被称为Oak,是1991年为消费类电子产品的嵌入式芯片而设计的。1995年更名为Java,并重新设计用于开发Internet应用程序。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器均支持Javaapplet。另一方面,Java技术也不断更新。图2-2 Java标志Java由四方面组成:1.Java编程语言2.Java文件格式3.Java虚拟机(JVM)4.Java应用程序接口(Java API)Java分为三个体系JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版),JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平台企业版),JavaME(J2ME)(Java 2 Platform Micro Edition,java平台微型版)。与传统程序不同,Sun 公司在推出 Java 之际就将其作为一种开放的技术。全球数以万计的 Java 开发公司被要求所设计的 Java软件必须相互兼容。“Java 语言靠群体的力量而非公司的力量”是Sun公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。Sun 公司对 Java 编程语言的解释是:Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。Java 平台是基于 Java 语言的平台。这样的平台非常流行。因此微软公司推出了与之竞争的.NET平台以及模仿Java的C#语言。Java是功能完善的通用程序设计语言,可以用来开发可靠的、要求严格的应用程序。2.3 Android应用程序开发2.3.1 Android系统架构Android的系统架构采用了分层架构的思想,如上图所示。从上层到底层共包括四层,分别是应用程序程序层、应用框架层、系统库和Android运行时和Linux内核。图2-3 Android系统总体架构每层功能简要介绍如下:图2-4 Android应用程序层应用程序层该层提供一些核心应用程序包,例如电子邮件、短信、日历、地图、浏览器和联系人管理等。同时,开发者可以利用Java语言设计和编写属于自己的应用程序,而这些程序与那些核心应用程序彼此平等、友好共处。图2-5 Android应用程序框架层应用程序框架层该层是Android应用开发的基础,开发人员大部分情况是在和她打交道。应用程序框架层包括活动管理器、窗口管理器、内容提供者、视图系统、包管理器、电话管理器、资源管理器、位置管理器、通知管理器和XMPP服务十个部分。在Android平台上,开发人员可以完全访问核心应用程序所使用的API框架。并且,任何一个应用程序都可以发布自身的功能模块,而其他应用程序则可以使用这些已发布的功能模块。基于这样的重用机制,用户就可以方便地替换平台本身的各种应用程序组件。图2-6 Android系统库系统库和Android运行时系统库包括九个子系统,分别是图层管理、媒体库、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。Android运行时包括核心库和Dalvik虚拟机,前者既兼容了大多数Java语言所需要调用的功能函数,又包括了Android的核心库,比如android.os、、android.media等等。后者是一种基于寄存器的java虚拟机,Dalvik虚拟机主要是完成对生命周期的管理、堆栈的管理、线程的管理、安全和异常的管理以及垃圾回收等重要功能。图2-7 Linux内核Linux内核Android核心系统服务依赖于Linux2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也是作为硬件与软件栈的抽象层。驱动:显示驱动、摄像头驱动、键盘驱动、WiFi驱动、Audio驱动、flash内存驱动、Binder(IPC)驱动、电源管理等。2.3.2 创建Android应用程序由Google公司提供的Android开发插件ADT运行在Eclipse集成开发环境当中,由Java语言进行软件的编写工作。下面我将介绍Android开发环境的搭建过程: Java环境(JDK- Java Development Kit)的安装1.从Oracle公司官网下载JDK安装程序,网址为:/technetwork/java/javase/downloads/index.html。2.安装JDK软件包3.配置系统环境变量验证Java环境是否搭载好的方法:在系统命令行中输入java version检验系统中安装的java环境,安装完成效果如下图所示:图2-8 Java运行环境检测 Eclipse与Android SDK Tools安装1.安装Eclipse集成开发环境2.下载Android3.在Eclipse中安装ADT插件并配置Android SDK Tools文件路径图2-9 配置Android SDK路径 创建Android应用程序并在虚拟机中运行1.通过File - New - Project 菜单,建立新项目Android Project2.填写必要的参数,建立Android虚拟机3.在虚拟机中运行该应用程序图2-10 运行Android虚拟机2.3.3 所需组件 TextView控件TextView是一个很常用的控件,它的中文名称为文本框控件。TextView控件继承了View类,View类为所有可视化控件的基类,主要提供了控件的绘制和事件处理方法。创建用户界面所使用的控件都继承自View 类。关于View和它的子类的相关属性,既可以在布局文件XML中设置,也在Java代码中动态设置。View类有很多属性,其中最常用的属性有,设置背景颜色,设置宽,高,是否获得焦点,id唯一编号,设置可滚动,设置上下左右的边距,水平垂直偏移量,对其方式等,其他属性请参考Android API文档。任何继承自View类的控件都拥有View类的属性和方法。TextView也不例外,这个控件的主要功能是显示文本。图2-11TextView控件 EditText控件EditText控件是TextView的子类,所以同样是View的一个子类。这个控件主要是用于与用户进行交互,让用户可以输入信息,应用程序可以获取到用户输入的文本或是图片,以完成相应的操作。图2-12 EditView控件 Button控件Button按钮控件在整个控件中地位很特殊,一般情况下都是事件的发起点。例如在界面上输入用户名密码后,都会有个确定,提交或取消之类的按钮,应用程序真正处理事件一般都是在Button按钮的onClick方法中进行的。图2-13 Button控件 ProgressBar控件ProgressBar是非常有用的一个控件,它最直观的感觉是一个进度条,当我们要动态显示一个事情的完成情况,例如下载应用时就会用到这个控件,最常见的为水平进度条和圆形进度条。图2-14ProgressBar控件 XML布局文件在Android开发应用程序的过程中,经常会使用XML文件来进行页面布局。实现英语那个程序界面的方式有两种,一种是XML布局文件,另一种是用Java代码实现。用Java代码实现界面可以使程序更灵活。但是,这样却丧失了Android平台提供的强大的布局文件,使用XML方式会更加便捷。在实际开发中,推荐大家以XML布局为主,Java代码作为修饰和辅助。在Eclipse开发工具中,XML布局文件存储在项目名/res/layout目录下。操作界面如图2-15所示。图2-15布局文件XML操作界面在图2-15中,我们可以像MFC的可视化窗口一样,拖动左侧控件到右侧的界面显示区。左侧可以看到很多常用控件,包括系统自带的和用户创建的。按照类型进行分类。左侧看到什么样子,拖动到界面显示区就显示什么样子,这遵循了人机交互的“所见即所得”理论。操作起来比以前的左侧控件区只能看到名称要方便的多。可视化编程固然好,但是一些细节方面程序员还是更喜欢直接操作代码。点击图2-15下边的test.xml,界面变成XML编程模式,如图2-16所示。图2-16布局文件XML编程模式从图2-16中,我们可以看到一个界面的XML的代码,下面对此代码进行简单的解释。第238行代码定义了一个线性布局,第719行嵌套了一个线性布局,第1217行添加了一个按钮。第2129行,添加了一个输入框,其中,第23行代码用来指明输入框类型是手机号,第26行代码用来指定输入框显示的长度为15个字符。第3136行定义了一个网格视图,其中,第35行代码设置了每行显示的数目为5个。其中第16行,我们可以看到android:text=string/Button1 这个语句是用来显示“Button”按钮的名称的,android 可以通过查询/res/values 目录下string.xml中Button1的值,来为“Button”按钮在界面上显示的名称赋值。我们可以在string.xml中对于名称进行定义。操作界面如图2-17所示。图2-17string.xml2.4 Http协议超文本传输协议 (HTTP-Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。图2-18 HTTP请求与响应方式HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,RFC 1945定义了HTTP/1.0版本。其中最著名的就是RFC 2616。RFC 2616定义了今天普遍使用的一个版本HTTP 1.1。为纪念Tim Berners-Lee提出HTTP后对互联网发展的贡献,万维网协会保留有他最原始提交的版本。HTTP协议(HyperText Transfer Protocol,超文本转移协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。HTTP协议的主要特点可概括如下:1.支持客户/服务器模式。2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。2.5 FTP协议文件传输协议(FTP-File Transfer Protocol)使得主机间可以共享文件。 FTP 使用TCP 生成一个虚拟连接用于控制信息,然后再生成一个单独的 TCP 连接用于数据传输。控制连接使用类似TELNET协议在主机间交换命令和消息。文件传输协议是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用层。FTP客户机可以给服务器发出命令来下载文件,上传文件,创建或改变服务器上的目录。FTP是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一。尽管World Wide Web(WWW)已经替代了FTP的大多数功能,FTP仍然是通过Internet把文件从客户机复制到服务器上的一种途径。FTP客户机可以给服务器发出命令来下载文件,上传文件,创建或改变服务器上的目录。原来的FTP软件多是命令行操作,有了像CUTEFTP这样的图形界面软件,使用FTP传输变得方便易学。主要使用它进行“上载”。即向服务器传输文件。由于FTP协议的传输速度比较快,我们在制作诸如“软件下载”这类网站时喜欢用FTP来实现,同时我们这种服务面向大众,不需要身份认证,即“匿名FTP服务器”。图2-19 FTP连接简图FTP是应用层的协议,它基于传输层,为用户服务,它们负责进行文件的传输。FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样。但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间会非常长,并且不时的必需执行一些冗长的登录进程。FTP服务一般运行在20和21两个端口。端口20用于在客户端和服务器之间传输数据流,而端口21用于传输控制流,并且是命令通向ftp服务器的进口。当数据通过数据流传输时,控制流处于空闲状态。而当控制流空闲很长时间后,客户端的防火墙会将其会话置为超时,这样当大量数据通过防火墙时,会产生一些问题。此时,虽然文件可以成功的传输,但因为控制会话会被防火墙断开,传输会产生一些错误。2.6 多线程下载技术线程可以理解为下载的通道,一个线程就是一个文件的下载通道,多线程也就是同时开起好几个下载通道.当服务器提供下载服务时,使用下载者是共享带宽的,在优先级相同的情况下,总服务器会对总下载线程进行平均分配。不难理解,如果线程越多,那么下载速度越快。多线程下载的原理是:通常服务器同时与多个用户连接,用户之间共享带宽。如果n个用户的优先级都相同,那么每个用户连接到该服务器上的实际带宽就是服务器带宽的n分之一。可以想象,如果用户数目较多,则每个用户只能占有可怜的一点带宽,下载将会是个漫长的过程。图2-20多线程下载示意图如果通过多个线程同时与服务器连接,那么就可以获得较高的带宽了。例如原来有10个用户都通过单一线程与服务器相连,服务器的总带宽假设为56Kbps,则每个用户(每个线程)分到的带宽是5.6Kbps,即0.7K字节/秒。如果同时打开两个线程与服务器连接,那么共有11个线程与服务器连接,而获得的带宽将是56/11*2=10.2Kbps,约1.27K字节/秒,将近原来的两倍。即:同时打开的线程越多,你所获取的带宽就越大。当然,这种情况下占用的系统资源也随着线程数的增加而增加。注:实现多线程的条件是服务器支持单一IP多线程下载。如果服务器不支持的话,有可能只有一个线程能连接成功,其余线程被屏蔽。2.7 断点续传技术断点续传指的是在下载或上传时,将下载或上传任务(一个文件或一个压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传或下载,如果碰到网络故障,可以从已经上传或下载的部分开始继续上传下载以后未上传下载的部分,而没有必要从头开始上传下载。用户可以节省时间,提高速度。有时用户上传下载文件需要历时数小时,万一线路中断,不具备断点续传的FTP服务器或下载软件就只能从头重传,比较好的FTP服务器或下载软件具有FTP断点续传能力,允许用户从上传下载断线的地方继续传送,这样大大减少了用户的烦恼。断点续传下载软件具有以下特点:1、断点续传功能,既可节约时间又可以节约金钱。2、定时下载功能,可以为将要下载的软件制定一任务列表,让下载软件在规定的时间自动拨号上网并下载软件,下载完毕后再自动挂起Modem,断开与internet的连接,甚至自动关闭计算机。3、多文件同时下载。4、支持拖放式操作,可将下载文件的URL超链接用鼠标拖放到下载软件的窗口上,即可激活下载软件,同时开始文件的下载。5、自动捕捉剪贴板上的URL并激活下载软件,可以捕捉到剪贴板中的URL,甚至浏览器中单击下载文件超链接,即可激活程序实现文件的下载。6、致命错误发生时的关闭机制。7、预防病毒侵害的安全机制,文件下载完毕,即可自动将其发送到指定的病毒的检测软件进行病毒扫描。断点续传下载软件包括Thunder、NetAnts、FlashGet、Net Vampire、Download Manager、GetRight、Go!Zilla、WinDownload等。注:Android系统默认下载方式不支持断点续传。第3章多功能下载软件需求分析第3章 多功能下载软件需求分析3.1 多功能下载软件系统目标多功能下载软件的设计初衷是为了提高用户在Android系统上的下载效率,增强下载的稳定性和易用性。多功能下载软件的主要功能有:1) 多线程下载2) 断点续传下载3) 查看文件下载信息(包括文件大小、下载速度、剩余时间等)4) 查看每个任务的下载线程信息、查看内部储存使用情况5) 对已下载的任务进行排序6) 即时查看已下载的任务7) 通过蓝牙分享已下载的文件8) 通过互联网分享已下载的文件9) 将下载好的文件备份到网盘中10) 单个或批量删除下载任务11) 用户通过多功能下载软件,可以更方便地进行文件下载以及分享工作。3.2 功能性需求3.2.1 用户界面需求下载界面:1) 显示当前正在下载中的任务,包括进行和暂停中的任务2) 显示正在下载任务的相关信息。任务详情界面:1) 显示单个正在下载任务的详细信息,包括文件名、文件类型、文件大小、下载速度、剩余时间等2) 可视化地显示单个任务的详细线程信息,包括线程数,每个线程的下载量、每个线程的下载速度等。下载完成界面:1) 显示所有已完成的下载任务及相关信息2) 界面提供打开、分享、备份、删除等选项可供用户选择。3.2.2 业务功能需求1) 新建下载任务:用户输入下载任务URL地址,系统根据用户的输入,解析并建立新的下载任务。2) 查看下载任务:用户可以查看全部正在下载的任务信息。3) 查看下载详情:用户可以查看单个下载任务的详细信息。4) 单线程下载:最基本的下载功能,与服务器之间使用单线程进行通信。5) 设定线程数:用户可以自定义下载线程数。6) 多线程下载:在保证系统资源的情况下,使用多线程进行快速下载。7) 暂停:在不退出多功能下载软件的前提下,暂停正在下载的任务,关闭与服务器之间的连接。8) 恢复:在不退出多功能下载软的前提下,恢复暂停中的任务,重新与服务器建立连接并从上次暂停的位置继续下载。9) 断点续传:用户可以在任意时间暂停正在下载的任务并退出多功能下载软件,在任意时间打开多功能下载软件并恢复未完成的下载,下载进度从上次暂停的位置继续下载。10) 删除:删除正在下载中的任务同时删除文件。11) 查看已完成的下载:在已完成界面中,用户可以查看全部已完成下载任务的信息。12) 排序:对已完成的下载按指定条件进行排序。13) 查看下载文件:用户可以指定需要查看的已下载文件,多功能下载软件自动将该文件从系统中打开。14) 蓝牙分享已下载文件:用户可以通过蓝牙将已下载文件分享给周围好友。15) 互联网分享已下载文件:用户可以通过互联网将已下载文件分享给网络好友。16) 备份网盘:用户可以将已下载文件备份至网络储存中。17) 删除:用户可以删除已下载的任务和文件。18) 批量删除:用户可以批量删除已下载的任务和文件。3.3 非功能性需求3.3.1 稳定性保证多功能下载软件运行的稳定性,在运行过程中不易出现系统崩溃、运行故障等问题。在用户重新开启多功能下载软件时,自动载入未完成的下载任务及下载进度,保证断点续传功能可以正常使用。3.3.2 易用性多功能下载软件界面友好,使用简便。无论是专业人士还是非专业人士,都可以立即上手,短时间即可熟练掌握使用方法。3.3.3 性能需求多线程下载的线程数与系统开销成正比,线程数越多,系统负担越大。多功能下载软件尽量在保证性能的前提下,减少系统资源的使用。3.3.4 配置需求硬件需求:无系统需求:Android 4.0Ice Cream Sandwich及以上版本第4章多功能下载软件系统设计第4章 多功能下载软件系统设计4.1 系统总体设计多功能下载软件的总体设计如图4-1所示。多功能下载软件分为正在下载和已下载两大部分,通过进入相应的界面使用对应的功能。图4-1 系统总体设计正在下载界面包括新建任务、查看下载任务暂停、继续任务等功能,用户可以在正在下载的界面中添加新任务并可查看全部下载任务的概要信息。通过单击某个任务,可以进入到该任务的详情界面,该界面包括任务的文件名、文件大小、下载速度、剩余时间、线程详情。在这个界面,用户可以查看每个线程详细的下载情况,以便更好地了解该任务。已下载界面包括查看下载文件、分享文件、批量删除等功能,用户可以通过点击某个任务在系统中即时查看该文件。当用户下载的内容有意思时,可以通过分享功能蓝牙分享给周围好友或联网分享给在线好友;当用户下载的内容很重要时,可以通过备份功能将资料备份到网络硬盘中。4.2 数据结构设计4.3.1 下载任务数据结构下载任务的数据结构如图4-3所示。下载任务中包括了URL,文件名、线程数等必要的下载信息,还包括了每个线程的下载进度,用于断点续传时的调用。publicclassDownloadingTaskInfoimplementsSerializablepublic String url = ;/下载地址URLpublic String fileName = ;/文件名publicintthreadNum = 5;/线程数,默认为5线程publicintfileSize = 0;/文件总大小publicint threadDownloadedSize;/每个线程当前下载量publicint threadTotalDownloadSize;/每个线程总下载量publicinttotalDownloadedSize = 0;/文件当前下载量public String savePath = ;/在SD卡中的存储路径publiclongusedTime = 0;/下载用时publiclongstartTime = 0;/用于计算下载用时publiclongendTime = 0;/用于计算下载用时publicbooleanisOnPause = true;/暂停状态标识publicbooleanisFinished = false;/完成状态标识publicDownloadingTaskInfo(intthreadNum)this.threadNum = threadNum;threadDownloadedSize = newintthreadNum+1;threadTotalDownloadSize = newintthreadNum+1;for (inti = 0; ithreadDownloadedSize.length; i+) threadDownloadedSizei = 0;threadTotalDownloadSizei = 0;图4-3 下载任务数据结构4.3.2 已下载任务数据结构已下载任务的数据结构如图4-4所示,已下载任务中包括了文件名、文件大小、平均速度等信息,方便用户的查看。还包括了文件的存储路径信息,当用户需要查看该文件时,多功能下载软件会通过该路径信息从系统中打开该文件。publicclassDownloadedTaskInfoimplementsSerializablepublic String fileName = ;/文件名public String savePath = ;/存储路径publicintfileSize = 0;/文件大小publiclongusedTime = 0;/总用时publicfloataveSpeed = 0;/平均速度public String url = ;/文件URL图4-4 已下载任务数据结构4.3 界面原形设计下载任务界面包括标题栏、工具栏、下载任务展示区以及底部状态栏。已下载任务界面包括标题栏、工具栏、已下载任务展示区以及底部状态栏。图4-5 下载任务界面原型设计(左)任务详情界面原型设计(右)图4-6 已下载界面原型设计任务详情界面包括标题栏、文件详细信息展示区、线程详细信息展示区以及底部状态栏。第5章多功能下载软件实现第5章 多功能下载软件实现5.1 多线程下载的算法实现多线程下载的原理为,将所需下载的文件平均分为若干块,每个线程负责下载其中的一块,最后将下载好的若干块数据流按顺序合成在一起,即可组成完整的文件。如图5-1所示,将待下载的任务分为N块,每个线程负责下载其中的一块。对于N线程下载有可能会产生小于N-1字节的余数未分配到任何一个线程,这时需要另外开启一个现成来下载该数据块,否则产生成文件不完整导致无法打开的情况。图5-1 多线程下载线程分割示意图以下为多线程下载实现的部分源代码,DownloadTask线程接收到下载任务的地址URL,与下载服务器建立连接并启动多线程进行下载。publicclassDownloadTaskextends Thread privateintblockSize;privateintthreadNum = 5;String urlStr, threadNo, fullPath;intindex;AllDownloadTasksallDownloadTasks = AllDownloadTasks.getInstance();publicDownloadTask(String urlStr, intthreadNum, String fullPath, int index) this.urlStr = urlStr;this.threadNum = threadNum;this.fullPath = fullPath;this.index = index;Overridepublicsynchronizedvoid run() DownloadThread downloadThreads = newDow
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【9语12月月考】合肥市第四十六中学2025-2026学年九年级上学期12月月考语文试题
- 医疗数据安全保险风险防控
- 医疗数据安全人才微课设计与应用
- 内蒙古乌兰察布市北京八中分校2026届生物高一上期末综合测试模拟试题含解析
- 胃病课件教学课件
- 医疗数据备份的区块链权限精细化管理
- 胀轨跑道应急处理
- 38:2024届浙江省温州市高三下学期5月三模学生版答案
- 肿瘤放射学课件
- 肿标课件教学课件
- 六年级下册英语书湘少版单词表
- 2025中国电信校园招聘易考易错模拟试题(共500题)试卷后附参考答案
- AI与智慧图书馆双向赋能
- 《中药的现代化》课件
- 生物专业英语翻译-蒋悟生
- 高速铁路客运规章(第2版)课件 项目五 高速铁路旅客运输服务管理
- 基础医学概论期末考试试卷
- 自愿离婚协议书标准样本(八篇)
- 重庆市两江新区2022-2023学年五年级下学期期末数学试题
- 闺蜜测试卷试题
- 基于DSP的抢答器的设计与开发
评论
0/150
提交评论