Android环境下多线程文件下载器的设计

    谭振雄 谢才香

    

    

    摘要:在Android环境中,传统的下载器多采用单线程进行文件下载,针对该问题,本文先把下载文件分割成多个区间,然后采用多线程下载的方式对每个区间进行下载,最后把各下载的区间组合成一个文件。该方法能够有效提高文件的下载速度,并且避免了单线程可能出现的应用程序无响应问题。

    关键词:Android;多线程下载;无响应;SQLite数据库

    0引言

    Android是基于Linux平台的开源移动端操作系统,当前已广泛应用于手机、平板、电视、汽车、智能穿戴等设备。由于Android的开源性,基于Android开发的应用软件也有着很好的市场前景。多线程下载是Android的一个应用,该应用能够有效提高下载速度,节省设备内存。在开发多线程下载器应用时,引入多线程技术可以有效地明确该下载系统的结构,确保该下载系统结构的灵活性,降低任务的耦合度,使得所开发的下载器能够更加高效地运行。

    1下载系统可行性

    1.1版权可行性

    随着智能手机的迅速普及和网民数量的增加,网络世界也越来越广阔,资源越来越丰富,人们已经非常熟悉智能手机的操作。原来在PC端观看视频的,慢慢地转移到手机上下载视频观看。移动端和PC端观看视频的人数基本相当,有些网站移动端的人数还要更高。根据爱奇艺上热门视频的播放平台数据显示,其移动端观看人数占比高达88%,PC端观看人数占比只有12%。本应用是完全自主开发,运行环境和开发工具使用合法,不存在版权问题,不会侵犯他人、集体或国家利益,不违反国家法律。

    1.2技术可行性

    本应用开发使用的编程语言是Java,本地下载记录存储使用SQLite,基于Android SDK开发包进行开发,由于Android SDK非常强大,使用十分简单、灵活,展示界面比较丰富多样,运用比较广泛,说明本技术具备可行性。硬件方面,手机硬件升级的速度飞快,存储容量越来越大,CPU性能越来越高,但价格确越来越低,市面上大多数移动设备的硬件完全能满足此应用的需要。

    1.3操作可行性

    目前市面上大多数搭载Android操作系统的手机都能运行该软件,该软件的安装、调试、运行不会改变原手机系统的设置和布局,并且应用界面简洁,稍加熟悉便能够操作该软件。

    2用户需求分析

    本下载器是一个提供浏览网页并且可以下载资源的Android平台手机端APP,依照用户的需求进行应用的设计与开发,为剧迷、影迷们提供一种选择,主要分为浏览网页和下载两大部分。

    浏览网页部分,要求实现以下部分功能:

    ①不输入网址就能快速进入一些常用的知名视频和门户网站;

    ②输入网址进入网站;

    ③輸入关键字进入搜索引擎,搜索想要的资源;

    ④可以快速跳转前后浏览的网站;

    ⑤在任意页中,都有按钮点击后跳转到主页。

    下载部分,要求实现以下部分功能:

    ①输入下载链接ud,能把资源下载到手机本地;

    ②下载过程中,可实现暂停和继续功能;

    ③如果下载未完成就退出后,可以保存下载进度。下次启动时,从上次中断处接着下载;

    ④下载完成的记录和正在下载的记录全部显示在下载管理列表中;

    ⑤可删除掉已下载的记录。

    3下载系统设计与实现

    3.1下载系统设计

    根据系统功能分析,系统可分为浏览网页模块和下载模块。浏览网页模块有3个页面,分别是主页、网址输入页、网站详情页;下载模块有3个页面,分别是下载管理页、新建下载链接页、下载详情页,系统功能模块如图1所示。

    3.2多线程下载设计

    线程可以看成是下载管道,一个线程就是一个下载管道,多线程也就是可以同时开启多个下载管道。本系统的多线程下载原理如图2所示。基本思路就是同时开启多个线程,每个线程从服务端下载对应的文件区间,所有线程下载完毕后再把各区间文件组合成一个文件。

    4下载系统性能测试

    根据下载系统功能需求进行相应测试,输入相应内容后,可以输出需求内容。对该下载系统进行测试后,得出该系统的功能完善,能够满足用户需求,功能测试通过,功能测试报告如表1。

    根据系统的性能需求进行测试,输入内容后,测试时间都达到了需求的目标。性能测试通过,性能测试报告如表2所示。

    5结论

    本文通过研究HTYP协议和线程的理论实现了多线程下载系统的相应功能。主要工作如下:

    (一)完成设计方案中所提到的浏览网页、关键字搜索、下载管理、视频播放等功能。

    (二)完成对该下载系统的相应测试,得出各测试功能达到预期目标。

    综上所述,本下载系统能够有效提高文件的下载速度,并能够记录用户的下载习惯以及过往的下载记录,从而方便用户的使用。