CN103227812A - 智能设备中支持断点续传的下载方法和装置 - Google Patents
智能设备中支持断点续传的下载方法和装置 Download PDFInfo
- Publication number
- CN103227812A CN103227812A CN2013100895110A CN201310089511A CN103227812A CN 103227812 A CN103227812 A CN 103227812A CN 2013100895110 A CN2013100895110 A CN 2013100895110A CN 201310089511 A CN201310089511 A CN 201310089511A CN 103227812 A CN103227812 A CN 103227812A
- Authority
- CN
- China
- Prior art keywords
- download
- file
- thread
- downloaded
- play amount
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种智能设备中支持断点续传的下载方法和装置,所述方法包括:下载程序启动后,若查询到待下载文件的下载记录信息,则根据查询到的信息获取下载进度表;根据下载进度表中的记录,启动下载线程进行断点续传:将下载的文件数据暂存于缓存中;并在缓存中的文件数据的大小达到设定字节数时,将缓存中的据写入到下载数据存储单元后,更新下载进度表中的下载线程的当前下载位置的偏移量。由于创建了下载数据存储单元对下载数据进行及时保存,创建了下载进度表及时进行下载进度的更新;从而可以根据之前记录的待下载文件的下载记录信息,获取到下载数据存储单元以及下载进度表,从断点保存的数据进行续传下载。
Description
技术领域
本发明涉及程序测试领域,尤其涉及一种智能设备中支持断点续传的下载方法和装置。
背景技术
随着科技的不断进步,智能化的、移动、便携式产品越来越得到人们的广泛使用;Android(安卓)操作系统作为一款嵌入式操作系统,因其功能的完备性、灵活性、用户界面友好性等优点,在许多智能设备中得到应用;相应地,基于Android操作系统而开发的Android应用程序数量也越来越多。
人们可以在Android系统中安装自己喜欢的各种应用。大部分用户安装应用程序都是通过网络搜索安装,这就需要保证网络的稳定性和下载模块的稳定性。
不过在实际应用中,经常由于某些不可控因素,比如网络异常中断或者Android设备异常断电等,导致下载不能正常进行而被中途中断;当用户重新启动下载时,经常会发现已经下载完的数据并没有保存,重新下载还需要从零开始。这种问题的发生,使得用户对于Android系统产品的喜爱度下降,这也给用户造成了网络流量的浪费。
虽然现有技术中,在台式计算机、或笔记本电脑中安装的Window(视窗)操作系统中,可以支持断点续传功能的下载程序;然而,这些支持断点续传功能的下载程序是基于Window操作系统开发的;Window操作系统因其可使用的系统资源较多、提供的API(Application Program Interface,应用程序接口)接口函数丰富的原因,开发出支持断点续传功能的下载程序较为容易;而Android操作系统作为嵌入式操作系统,其可使用的系统资源有限,可提供的API接口函数有限,因此,基于Window操作系统而开发出的支持断点续传功能的下载程序,无法移植到Android操作系统中。
综上所述,现有技术中缺少基于Android操作系统的支持断点续传功能的下载程序,具有提供基于Android操作系统的支持断点续传的下载功能的需求。
发明内容
本发明的实施例提供了一种智能设备中支持断点续传的下载方法和装置,可以为基于Android操作系统的智能设备提供支持断点续传的下载功能。
根据本发明的一个方面,提供了一种智能设备中支持断点续传的下载方法,包括:
基于Android操作系统的智能设备中的下载程序启动后,查询本地是否存储有待下载文件的下载记录信息;所述待下载文件的下载记录信息中包括:该待下载文件的文件名称、下载地址、下载进度表的名称;若查询到存储有该待下载文件的下载记录信息,则:
根据所述下载进度表的名称,获取该待下载文件的下载进度表;所述下载进度表中记录有下载线程的下载数据存储单元的名称或地址,以及所述下载线程的当前下载位置的偏移量;
将所述下载进度表中记录的下载线程的当前位置的偏移量作为所述下载线程的起始下载位置的偏移量后,启动所述下载线程进行断点续传:
所述下载线程根据起始下载位置的偏移量,以及所述待下载文件的下载地址进行文件数据的下载,并将下载的文件数据暂存于缓存中;并在所述缓存中的文件数据的大小达到设定字节数时,将所述缓存中的文件数据写入到所述下载数据存储单元后,更新所述下载进度表中的下载线程的当前下载位置的偏移量;其中,所述待下载文件的下载进度表和下载数据存储单元,是所述下载程序在所述待下载文件的首次下载时在嵌入式数据库中创建的。
进一步,在所述更新所述下载进度表中的当前下载位置的偏移量后,还包括:
所述下载线程在判断出所述下载进度表中的下载线程的当前下载位置的偏移量等于下载线程的结束下载位置的偏移量后,停止文件数据的下载,所述下载线程的下载任务完成;
其中,所述下载线程的结束下载位置的偏移量是记录在所述下载进度表中的;或者,所述下载线程的结束下载位置的偏移量是在所述启动所述下载线程进行断点续传之前,根据所述待下载文件的文件大小计算出来的。
进一步,在所述查询本地是否存储有待下载文件的下载记录信息后,还包括:
若没有查询到该待下载文件的下载记录信息,则:
根据该待下载文件的文件大小,确定下载线程的起始下载位置的偏移量和结束下载位置的偏移量;
在嵌入式数据库中为所述待下载文件的下载线程创建所述下载数据存储单元、为所述待下载文件创建所述下载进度表后,存储该待下载文件的下载记录信息,启动所述下载线程;
所述下载线程根据起始下载位置的偏移量进行文件数据的下载,并将下载的文件数据暂存于缓存中;并在所述缓存中的文件数据的大小达到设定字节数时,将所述缓存中的文件数据写入到所述下载数据存储单元后,更新所述下载进度表中的下载线程的当前下载位置的偏移量。
较佳地,所述下载线程为多个,以及所述待下载文件的下载进度表中具体记录有:针对每个下载线程,记录有该下载线程的下载数据存储单元的名称或地址、该下载线程的当前下载位置的偏移量、该下载线程的结束下载位置的偏移量;以及
所述根据该待下载文件的文件大小,确定下载线程的起始下载位置的偏移量和结束下载位置的偏移量具体包括:
根据该待下载文件的文件大小,以及下载线程的个数,为每个下载线程分配下载数据块的大小;
依据下载线程的索引号、以及为每个下载线程分配下载数据块的大小,确定各下载线程的起始下载位置的偏移量和结束下载位置的偏移量:
对于第1个下载线程,确定其起始下载位置的偏移量为0,其结束下载位置的偏移量等于为其分配的下载数据块的大小;
对于最后1个下载线程,确定其起始下载位置的偏移量等于该待下载文件的文件大小减去为其分配的下载数据块的大小,其结束下载位置的偏移量等于该待下载文件的文件大小;
对于其它下载线程,确定其起始下载位置的偏移量等于其在前下载线程的结束下载位置的偏移量加1,其结束下载位置的偏移量等于其起始下载位置的偏移量与为其分配的下载数据块的大小之和。
较佳地,所述下载线程根据起始下载位置的偏移量,以及所述待下载文件的下载地址进行文件数据的下载,并将下载的文件数据暂存于缓存中;并在所述缓存中的文件数据的大小达到设定字节数时,将所述缓存中的文件数据写入到所述下载数据存储单元后,更新所述下载进度表中的下载线程的当前下载位置的偏移量,具体包括:
对于每个下载线程,该下载线程根据本下载线程的起始下载位置的偏移量,以及所述待下载文件的下载地址进行文件数据的下载,并将下载的文件数据暂存于本下载线程的缓存中;并在该缓存中的文件数据的大小达到设定字节数时,将该缓存中的文件数据写入到本下载线程的下载数据存储单元后,更新所述下载进度表中的本下载线程的当前下载位置的偏移量。
较佳地,所述下载线程在判断出所述下载进度表中的下载线程的当前下载位置的偏移量等于下载线程的结束下载位置的偏移量后,停止文件数据的下载,所述下载线程的下载任务完成,具体包括:
对于每个下载线程,若该下载线程判断出所述下载进度表中的本下载线程的当前下载位置的偏移量等于本下载线程的结束下载位置的偏移量,则停止文件数据的下载,该下载线程的下载任务完成;以及
在所述启动所述下载线程后,还包括:
所述下载程序在所有的下载线程的下载任务都完成后,将各下载线程的下载数据存储单元中的文件数据合并,并显示所述待下载文件下载完成的信息。
较佳地,在所述查询本地是否存储有待下载文件的下载记录信息之前,还包括:
接收用户输入的所述待下载文件的下载地址,以及所述待下载文件的下载指令。
较佳地,所述下载程序启动具体包括:
所述Android操作系统在所述下载程序预先注册的响应事件触发时,启动所述下载程序;或者
所述Android操作系统在所述下载程序预先注册的响应事件触发时,显示出注册了该响应事件的各程序列表;在接收到用户选择了所述下载程序的指令后,启动所述下载程序;
其中,所述响应事件包括:网络文件被选择下载。
根据本发明的另一个方面,还提供了一种智能设备中支持断点续传的下载装置,包括:
下载记录信息查询模块,用于在基于Android操作系统的智能设备中的下载程序启动后,查询本地是否存储有待下载文件的下载记录信息;所述待下载文件的下载记录信息中包括:该待下载文件的文件名称、下载地址、下载进度表的名称;若查询到存储有该待下载文件的下载记录信息,则发送断点续传通知;
断点续传模块,用于接收到所述断点续传通知后,根据所述下载进度表的名称,获取该待下载文件的下载进度表;所述下载进度表中记录有下载线程的下载数据存储单元的名称或地址,以及所述下载线程的当前下载位置的偏移量;并将所述下载进度表中记录的下载线程的当前位置的偏移量作为所述下载线程的起始下载位置的偏移量后,启动所述下载线程进行断点续传:
所述下载线程根据起始下载位置的偏移量,以及所述待下载文件的下载地址进行文件数据的下载,并将下载的文件数据暂存于缓存中;并在所述缓存中的文件数据的大小达到设定字节数时,将所述缓存中的文件数据写入到所述下载数据存储单元后,更新所述下载进度表中的下载线程的当前下载位置的偏移量。
较佳地,所述下载记录信息查询模块还用于若没有查询到该待下载文件的下载记录信息,则发送新文件下载通知;以及所述装置还包括:
新文件下载处理模块,用于接收到所述新文件下载通知后,根据该待下载文件的文件大小,确定下载线程的起始下载位置的偏移量和结束下载位置的偏移量;并在嵌入式数据库中为所述待下载文件的下载线程创建所述下载数据存储单元、为所述待下载文件创建所述下载进度表后,存储该待下载文件的下载记录信息,启动所述下载线程;
所述下载线程根据起始下载位置的偏移量进行文件数据的下载,并将下载的文件数据暂存于缓存中;并在所述缓存中的文件数据的大小达到设定字节数时,将所述缓存中的文件数据写入到所述下载数据存储单元后,更新所述下载进度表中的下载线程的当前下载位置的偏移量。
本发明实施例的技术方案中,由于在嵌入式数据库中创建了下载数据存储单元对下载数据进行及时保存,还创建了下载进度表及时进行下载进度(即当前下载位置)的更新;并建立机制使得在对同一文件重启下载后,可以根据之前记录的待下载文件的下载记录信息,获取到该待下载文件的下载数据存储单元以及下载进度表,从断点保存的数据进行续传下载;从而为基于Android操作系统的智能设备提供支持断点续传的下载功能;
更优地,本发明的技术方案,还采用了多线程的技术,对多线程下载的数据分别进行保存,从而既可以支持断点续传,又提高了下载速度。
附图说明
图1为本发明实施例的支持断点续传的下载方法流程图;
图2为本发明实施例的支持断点续传的下载装置的内部结构框图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举出优选实施例,对本发明进一步详细说明。然而,需要说明的是,说明书中列出的许多细节仅仅是为了使读者对本发明的一个或多个方面有一个透彻的理解,即便没有这些特定的细节也可以实现本发明的这些方面。
本申请使用的“模块”、“系统”等术语旨在包括与计算机相关的实体,例如但不限于硬件、固件、软硬件组合、软件或者执行中的软件。例如,模块可以是,但并不仅限于:处理器上运行的进程、处理器、对象、可执行程序、执行的线程、程序和/或计算机。举例来说,计算设备上运行的应用程序和此计算设备都可以是模块。一个或多个模块可以位于执行中的一个进程和/或线程内,一个模块也可以位于一台计算机上和/或分布于两台或更多台计算机之间。
本发明的发明人考虑到,采用嵌入式数据库对下载数据进行及时保存;并建立机制使得在对同一文件重启下载后,根据断点保存的数据进行续传下载;从而为基于Android操作系统的智能设备提供支持断点续传的下载功能;更优地,本发明的技术方案,还采用了多线程的技术,对多线程下载的数据分别进行保存,从而既可以支持断点续传,又提高了下载速度。
下面结合附图详细说明本发明实施例的技术方案。本发明实施例提供的可以安装于基于Android操作系统的智能设备中的下载程序(或称下载装置),其支持断点续传的下载方法,流程图如图1所示,包括如下步骤:
S101:在下载程序(或称下载装置)启动后,判断是否存储有待下载文件的下载记录信息;若存储有该待下载文件的下载记录信息,则执行步骤S112;否则,执行步骤S102。
具体地,在下载程序(或称下载装置)启动后,对于用户需要进行下载的文件(本文中称为待下载文件),下载程序去查询本地存储的下载记录信息中是否有该待下载文件的下载记录信息。一般而言,存储的下载记录信息中会包括之前下载的各文件的相关信息,比如文件名称、下载地址、下载时间等。
若下载程序判断出本地已经存储有当前的待下载文件的下载记录信息,即表明该待下载文件之前已经进行了部分数据的下载,则执行步骤S112,对该待下载文件继续进行下载;
若下载程序判断出本地没有存储该待下载文件的下载记录信息,即表明下载程序从未对该待下载文件进行下载,则执行步骤S102。
S102:获取该待下载文件的文件大小,确定下载线程的起始下载位置的偏移量和结束下载位置的偏移量。
在本步骤中,下载程序根据该待下载文件的下载地址,与该待下载文件所在的服务器进行通信,获取该待下载文件的文件大小;根据获取的文件大小,确定下载线程的起始下载位置的偏移量和结束下载位置的偏移量。例如,对于一个下载线程的情况,则确定该下载线程的起始下载位置的偏移量为0,结束下载位置的偏移量等于该待下载文件的文件大小。
更优地,下载线程可以是多个,从而可以并发地以多个线程进行文件的下载;例如,下载线程可以有3个。对于多个下载线程的情况,则下载程序根据获取的文件大小,分别确定每个下载线程的起始下载位置的偏移量和结束下载位置的偏移量,具体方法如下:
根据该待下载文件的文件大小,以及下载线程的个数,为每个下载线程分配下载数据块的大小;例如,将该待下载文件的文件大小除以下载线程的个数后,得到的整数值作为基础数据块,则确定为最后1个下载线程的下载数据块的大小为:该待下载文件的文件大小-(下载线程的个数-1)×基础数据块;确定其它下载线程的下载数据块的大小为该基础数据块;
依据下载线程的索引号、以及为每个下载线程分配下载数据块的大小,确定各下载线程的起始下载位置的偏移量和结束下载位置的偏移量:对于第1个下载线程,确定其起始下载位置的偏移量为0,其结束下载位置的偏移量等于为其分配的下载数据块的大小;对于最后1个下载线程,确定其起始下载位置的偏移量等于该待下载文件的文件大小减去为其分配的下载数据块的大小,其结束下载位置的偏移量等于该待下载文件的文件大小;对于其它下载线程,确定其起始下载位置的偏移量等于其在前下载线程的结束下载位置的偏移量加1,其结束下载位置的偏移量等于其起始下载位置的偏移量与为其分配的下载数据块的大小之和。
S103:在嵌入式数据库中为所述待下载文件的下载线程创建下载数据存储单元、为所述待下载文件创建下载进度表后,存储该待下载文件的下载记录信息,启动下载线程。
具体地,下载程序在嵌入式数据库中为下载线程创建的下载数据存储单元,是用于存储该下载线程所下载的数据的;下载程序为所述待下载文件创建的下载进度表中,记录有下载线程的当前下载位置的偏移量,进一步,还可记录有下载线程的结束下载位置的偏移量。本发明所采用的嵌入式数据库具体可以是Sqlite数据库,Sqlite数据库具有强大的异常处理能力,出现掉电等异常情况时也不会造成数据丢失。也就是说,所述待下载文件的下载进度表和下载数据存储单元,是所述下载程序在所述待下载文件的首次下载时在嵌入式数据库中创建的。
较优地,对于多个下载线程的情况,下载程序分别为每个下载线程创建对应该下载线程的下载数据存储单元;并且,下载程序为所述待下载文件创建的下载进度表中,对于每个下载线程,记录有该下载线程的索引号、当前下载位置的偏移量、下载数据存储单元的名称或地址;进一步,下载进度表中还可对于每个下载线程,记录有该下载线程的结束下载位置的偏移量。
下表1则示出了一个具体的下载进度表:
表1
表1所示的下载进度表中,对于每个下载线程,记录了该下载线程的索引号、当前下载位置的偏移量、下载数据存储单元的名称或地址、已下载数据的大小等信息。
下载程序为所述待下载文件的下载线程创建下载数据存储单元、为所述待下载文件创建下载进度表后,在本地存储该待下载文件的下载记录信息;存储的该待下载文件的下载记录信息包括:该待下载文件的文件名称、下载地址、下载进度表的名称,进一步还可将当前时间作为该待下载文件的下载时间存储到该待下载文件的下载记录信息中。
S104:下载线程根据起始下载位置的偏移量,以及所述待下载文件的下载地址进行文件数据的下载,并将下载的文件数据暂存于缓存中;若缓存中的文件数据的大小达到设定字节数,则将缓存中的文件数据写入到下载数据存储单元中。
具体地,下载线程根据所述待下载文件的下载地址访问到所述待下载文件,并从所述待下载文件中对应本下载线程的起始下载位置的偏移量处开始下载文件数据。例如,下载线程的起始下载位置的偏移量为0,则从所述待下载文件的起始处开始下载文件数据;若下载线程的起始下载位置的偏移量为1025,则从所述待下载文件的1025字节处开始进行下载。
下载线程将下载的文件数据暂存于缓存中;若缓存中的文件数据的大小达到设定字节数,则将缓存中的文件数据写入到之前创建的下载数据存储单元中,以及时保存下载数据;下载线程在将文件数据写入到下载数据存储单元后,更新下载进度表中的下载线程的当前下载位置的偏移量:下载线程记录了以其根据起始下载位置的偏移量进行下载为开始,到当前为止所下载的数据块的大小,并根据下载线程的起始下载位置的偏移量,以及当前记录的所下载的数据块的大小,更新下载进度表中的下载线程的当前下载位置的偏移量;即将下载线程的起始下载位置的偏移量与当前记录的所下载的数据块的大小之和,作为更新的下载线程的当前下载位置的偏移量。
较佳地,对于多个下载线程的情况,每个下载线程根据所述待下载文件的下载地址,以及本下载线程的起始下载位置的偏移量分别进行文件数据的下载,并将下载的文件数据暂存于本下载线程的缓存中;若该下载线程判断出本下载线程的缓存中的文件数据的大小达到设定字节数,则将该缓存中的文件数据写入到本下载线程的下载数据存储单元后,更新下载进度表中的本下载线程的当前下载位置的偏移量。
S105:在下载线程的当前下载位置的偏移量等于下载线程的结束下载位置的偏移量时,下载线程停止文件数据的下载,下载线程的下载任务完成。
具体地,下载线程在判断出下载进度表中的下载线程的当前下载位置的偏移量等于下载线程的结束下载位置的偏移量后,停止文件数据的下载,下载线程的下载任务完成。
较佳地,对于多个下载线程的情况,在其中一个下载线程判断出下载进度表中的本下载线程的当前下载位置的偏移量等于本下载线程的结束下载位置的偏移量后,停止文件数据的下载,该下载线程的下载任务完成。
下载程序在所有的下载线程的下载任务都完成后,将该待下载文件的下载记录信息删除;并将各下载线程的下载数据存储单元中的文件数据合并,显示所述待下载文件下载完成的信息;以便用户存储、或安装新下载的文件。
S112:读取所述待下载文件的下载进度表,根据下载进度表中的下载进度记录,确定下载线程的起始下载位置的偏移量后,启动下载线程,跳转到步骤S104进行断点续传。
具体地,下载程序根据所述待下载文件的下载记录信息中的下载进度表的名称,获取该待下载文件的下载进度表;将所述下载进度表中记录的下载线程的当前位置的偏移量作为所述下载线程的起始下载位置的偏移量;
在启动所述下载线程进行断点续传之前,还可确定所述下载线程的结束下载位置的偏移量。所述下载线程的结束下载位置的偏移量可以是前次下载该待下载文件时,在上述步骤S102确定出下载线程的起始下载位置的偏移量和结束下载位置的偏移量后,记录到下载进度表中,在本步骤S112中从下载进度表读取出来;或者,在本步骤S112中依据上述步骤S102中的方法确定出来。
较佳地,对于多个下载线程的情况,下载程序根据所述待下载文件的下载记录信息中的下载进度表的名称,获取该待下载文件的下载进度表后,分别针对每个下载线程。将所述下载进度表中记录的该下载线程的当前位置的偏移量作为该下载线程的起始下载位置的偏移量。
本发明中的下载程序(或称下载装置)可采用多种方法进行启动:
一种方法是,用户直接在智能设备中点击该下载程序,从而运行该下载程序,运行该下载程序后,直接输入待下载文件的下载地址;
另一种方法是,智能设备中的Android操作系统在所述下载程序预先注册的响应事件触发时,启动所述下载程序;或者所述Android操作系统在所述下载程序预先注册的响应事件触发时,显示出注册了该响应事件的各程序列表;在接收到用户选择了所述下载程序的指令后,启动所述下载程序;其中,所述响应事件包括:网络文件被选择下载。响应事件是在该下载程序的安装过程中注册到Android操作系统中的。
本发明提供的支持断点续传的下载程序(或称下载装置)的内部结构框图,如图2所示,包括:下载记录信息查询模块201、断点续传模块202。
下载记录信息查询模块201用于在基于Android操作系统的智能设备中的下载程序启动后,查询本地是否存储有待下载文件的下载记录信息;所述待下载文件的下载记录信息中包括:该待下载文件的文件名称、下载地址、下载进度表的名称;若查询到存储有该待下载文件的下载记录信息,则向断点续传模块202发送断点续传通知;
断点续传模块202用于接收到下载记录信息查询模块201发送的断点续传通知后,根据所述下载进度表的名称,获取该待下载文件的下载进度表;所述下载进度表中记录有下载线程的下载数据存储单元的名称或地址,以及所述下载线程的当前下载位置的偏移量;并将所述下载进度表中记录的下载线程的当前位置的偏移量作为所述下载线程的起始下载位置的偏移量后,启动所述下载线程进行断点续传:所述下载线程根据起始下载位置的偏移量,以及所述待下载文件的下载地址进行文件数据的下载,并将下载的文件数据暂存于缓存中;并在所述缓存中的文件数据的大小达到设定字节数时,将所述缓存中的文件数据写入到所述下载数据存储单元后,更新所述下载进度表中的下载线程的当前下载位置的偏移量。所述下载线程在判断出所述下载进度表中的下载线程的当前下载位置的偏移量等于下载线程的结束下载位置的偏移量后,停止文件数据的下载,所述下载线程的下载任务完成;其中,所述下载线程的结束下载位置的偏移量是记录在所述下载进度表中的;或者,所述下载线程的结束下载位置的偏移量是由断点续传模块202在启动所述下载线程进行断点续传之前,根据所述待下载文件的文件大小计算出来的。
进一步,本发明提供的支持断点续传的下载程序(或称下载装置)中还包括:新文件下载处理模块203。
上述的下载记录信息查询模块201还用于若没有查询到该待下载文件的下载记录信息,则向新文件下载处理模块203发送新文件下载通知;
新文件下载处理模块203用于接收到下载记录信息查询模块201发送的新文件下载通知后,根据该待下载文件的文件大小,确定下载线程的起始下载位置的偏移量和结束下载位置的偏移量;并在嵌入式数据库中为所述待下载文件的下载线程创建所述下载数据存储单元、为所述待下载文件创建所述下载进度表后,存储该待下载文件的下载记录信息,启动所述下载线程;所述下载线程启动后,根据起始下载位置的偏移量进行文件数据的下载,并将下载的文件数据暂存于缓存中;并在所述缓存中的文件数据的大小达到设定字节数时,将所述缓存中的文件数据写入到所述下载数据存储单元后,更新所述下载进度表中的下载线程的当前下载位置的偏移量。所述下载线程在判断出所述下载进度表中的下载线程的当前下载位置的偏移量等于下载线程的结束下载位置的偏移量后,停止文件数据的下载,所述下载线程的下载任务完成。
上述模块中的具体功能可以参考上述图1所示各步骤中的方法,此处不再赘述。
本发明实施例的技术方案中,由于在嵌入式数据库中创建了下载数据存储单元对下载数据进行及时保存,还创建了下载进度表及时进行下载进度(即当前下载位置)的更新;并建立机制使得在对同一文件重启下载后,可以根据之前记录的待下载文件的下载记录信息,获取到该待下载文件的下载数据存储单元以及下载进度表,从断点保存的数据进行续传下载;从而为基于Android操作系统的智能设备提供支持断点续传的下载功能;
更优地,本发明的技术方案,还采用了多线程的技术,对多线程下载的数据分别进行保存,从而既可以支持断点续传,又提高了下载速度。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读取存储介质中,如:ROM/RAM、磁碟、光盘等。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种智能设备中支持断点续传的下载方法,包括:
基于Android操作系统的智能设备中的下载程序启动后,查询本地是否存储有待下载文件的下载记录信息;所述待下载文件的下载记录信息中包括:该待下载文件的文件名称、下载地址、下载进度表的名称;若查询到存储有该待下载文件的下载记录信息,则:
根据所述下载进度表的名称,获取该待下载文件的下载进度表;所述下载进度表中记录有下载线程的下载数据存储单元的名称或地址,以及所述下载线程的当前下载位置的偏移量;
将所述下载进度表中记录的下载线程的当前位置的偏移量作为所述下载线程的起始下载位置的偏移量后,启动所述下载线程进行断点续传:
所述下载线程根据起始下载位置的偏移量,以及所述待下载文件的下载地址进行文件数据的下载,并将下载的文件数据暂存于缓存中;并在所述缓存中的文件数据的大小达到设定字节数时,将所述缓存中的文件数据写入到所述下载数据存储单元后,更新所述下载进度表中的下载线程的当前下载位置的偏移量;其中,所述待下载文件的下载进度表和下载数据存储单元,是所述下载程序在所述待下载文件的首次下载时在嵌入式数据库中创建的。
2.如权利要求1所述的方法,其特征在于,在所述更新所述下载进度表中的当前下载位置的偏移量后,还包括:
所述下载线程在判断出所述下载进度表中的下载线程的当前下载位置的偏移量等于下载线程的结束下载位置的偏移量后,停止文件数据的下载,所述下载线程的下载任务完成;
其中,所述下载线程的结束下载位置的偏移量是记录在所述下载进度表中的;或者,所述下载线程的结束下载位置的偏移量是在所述启动所述下载线程进行断点续传之前,根据所述待下载文件的文件大小计算出来的。
3.如权利要求2所述的方法,其特征在于,在所述查询本地是否存储有待下载文件的下载记录信息后,还包括:
若没有查询到该待下载文件的下载记录信息,则:
根据该待下载文件的文件大小,确定下载线程的起始下载位置的偏移量和结束下载位置的偏移量;
在嵌入式数据库中为所述待下载文件的下载线程创建所述下载数据存储单元、为所述待下载文件创建所述下载进度表后,存储该待下载文件的下载记录信息,启动所述下载线程;
所述下载线程根据起始下载位置的偏移量进行文件数据的下载,并将下载的文件数据暂存于缓存中;并在所述缓存中的文件数据的大小达到设定字节数时,将所述缓存中的文件数据写入到所述下载数据存储单元后,更新所述下载进度表中的下载线程的当前下载位置的偏移量。
4.如权利要求3所述的方法,其特征在于,所述下载线程为多个,以及所述待下载文件的下载进度表中具体记录有:针对每个下载线程,记录有该下载线程的下载数据存储单元的名称或地址、该下载线程的当前下载位置的偏移量、该下载线程的结束下载位置的偏移量;以及
所述根据该待下载文件的文件大小,确定下载线程的起始下载位置的偏移量和结束下载位置的偏移量具体包括:
根据该待下载文件的文件大小,以及下载线程的个数,为每个下载线程分配下载数据块的大小;
依据下载线程的索引号、以及为每个下载线程分配下载数据块的大小,确定各下载线程的起始下载位置的偏移量和结束下载位置的偏移量:
对于第1个下载线程,确定其起始下载位置的偏移量为0,其结束下载位置的偏移量等于为其分配的下载数据块的大小;
对于最后1个下载线程,确定其起始下载位置的偏移量等于该待下载文件的文件大小减去为其分配的下载数据块的大小,其结束下载位置的偏移量等于该待下载文件的文件大小;
对于其它下载线程,确定其起始下载位置的偏移量等于其在前下载线程的结束下载位置的偏移量加1,其结束下载位置的偏移量等于其起始下载位置的偏移量与为其分配的下载数据块的大小之和。
5.如权利要求4所述的方法,其特征在于,所述下载线程根据起始下载位置的偏移量,以及所述待下载文件的下载地址进行文件数据的下载,并将下载的文件数据暂存于缓存中;并在所述缓存中的文件数据的大小达到设定字节数时,将所述缓存中的文件数据写入到所述下载数据存储单元后,更新所述下载进度表中的下载线程的当前下载位置的偏移量,具体包括:
对于每个下载线程,该下载线程根据本下载线程的起始下载位置的偏移量,以及所述待下载文件的下载地址进行文件数据的下载,并将下载的文件数据暂存于本下载线程的缓存中;并在该缓存中的文件数据的大小达到设定字节数时,将该缓存中的文件数据写入到本下载线程的下载数据存储单元后,更新所述下载进度表中的本下载线程的当前下载位置的偏移量。
6.如权利要求5所述的方法,其特征在于,所述下载线程在判断出所述下载进度表中的下载线程的当前下载位置的偏移量等于下载线程的结束下载位置的偏移量后,停止文件数据的下载,所述下载线程的下载任务完成,具体包括:
对于每个下载线程,若该下载线程判断出所述下载进度表中的本下载线程的当前下载位置的偏移量等于本下载线程的结束下载位置的偏移量,则停止文件数据的下载,该下载线程的下载任务完成;以及
在所述启动所述下载线程后,还包括:
所述下载程序在所有的下载线程的下载任务都完成后,将各下载线程的下载数据存储单元中的文件数据合并,并显示所述待下载文件下载完成的信息。
7.如权利要求3-6任一所述的方法,其特征在于,在所述查询本地是否存储有待下载文件的下载记录信息之前,还包括:
接收用户输入的所述待下载文件的下载地址,以及所述待下载文件的下载指令。
8.如权利要求3-6任一所述的方法,其特征在于,所述下载程序启动具体包括:
所述Android操作系统在所述下载程序预先注册的响应事件触发时,启动所述下载程序;或者
所述Android操作系统在所述下载程序预先注册的响应事件触发时,显示出注册了该响应事件的各程序列表;在接收到用户选择了所述下载程序的指令后,启动所述下载程序;
其中,所述响应事件包括:网络文件被选择下载。
9.一种智能设备中支持断点续传的下载装置,包括:
下载记录信息查询模块,用于在基于Android操作系统的智能设备中的下载程序启动后,查询本地是否存储有待下载文件的下载记录信息;所述待下载文件的下载记录信息中包括:该待下载文件的文件名称、下载地址、下载进度表的名称;若查询到存储有该待下载文件的下载记录信息,则发送断点续传通知;
断点续传模块,用于接收到所述断点续传通知后,根据所述下载进度表的名称,获取该待下载文件的下载进度表;所述下载进度表中记录有下载线程的下载数据存储单元的名称或地址,以及所述下载线程的当前下载位置的偏移量;并将所述下载进度表中记录的下载线程的当前位置的偏移量作为所述下载线程的起始下载位置的偏移量后,启动所述下载线程进行断点续传:
所述下载线程根据起始下载位置的偏移量,以及所述待下载文件的下载地址进行文件数据的下载,并将下载的文件数据暂存于缓存中;并在所述缓存中的文件数据的大小达到设定字节数时,将所述缓存中的文件数据写入到所述下载数据存储单元后,更新所述下载进度表中的下载线程的当前下载位置的偏移量。
10.如权利要求9所述的装置,其特征在于,
所述下载记录信息查询模块还用于若没有查询到该待下载文件的下载记录信息,则发送新文件下载通知;以及所述装置还包括:
新文件下载处理模块,用于接收到所述新文件下载通知后,根据该待下载文件的文件大小,确定下载线程的起始下载位置的偏移量和结束下载位置的偏移量;并在嵌入式数据库中为所述待下载文件的下载线程创建所述下载数据存储单元、为所述待下载文件创建所述下载进度表后,存储该待下载文件的下载记录信息,启动所述下载线程;
所述下载线程根据起始下载位置的偏移量进行文件数据的下载,并将下载的文件数据暂存于缓存中;并在所述缓存中的文件数据的大小达到设定字节数时,将所述缓存中的文件数据写入到所述下载数据存储单元后,更新所述下载进度表中的下载线程的当前下载位置的偏移量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310089511.0A CN103227812B (zh) | 2013-03-19 | 2013-03-19 | 智能设备中支持断点续传的下载方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310089511.0A CN103227812B (zh) | 2013-03-19 | 2013-03-19 | 智能设备中支持断点续传的下载方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103227812A true CN103227812A (zh) | 2013-07-31 |
CN103227812B CN103227812B (zh) | 2016-08-03 |
Family
ID=48838068
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310089511.0A Active CN103227812B (zh) | 2013-03-19 | 2013-03-19 | 智能设备中支持断点续传的下载方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103227812B (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104375854A (zh) * | 2014-07-25 | 2015-02-25 | 腾讯科技(深圳)有限公司 | 一种应用更新下载方法及用户终端 |
CN104580285A (zh) * | 2013-10-15 | 2015-04-29 | 镇江雅迅软件有限责任公司 | 一种基于http协议断点续传文件的实现方法 |
CN105187564A (zh) * | 2015-10-14 | 2015-12-23 | 中科宇图天下科技有限公司 | 一种手机端文件断点续传的方法 |
CN106790525A (zh) * | 2016-12-20 | 2017-05-31 | 广东小天才科技有限公司 | 一种文件下载方法及装置 |
CN106909414A (zh) * | 2015-12-23 | 2017-06-30 | 北京奇虎科技有限公司 | 应用程序的下载数据处理方法与装置 |
CN108429799A (zh) * | 2018-03-01 | 2018-08-21 | 北京天融信网络安全技术有限公司 | 批量文件的并行传输方法、装置及存储介质 |
CN108449415A (zh) * | 2018-03-27 | 2018-08-24 | 深圳中兴网信科技有限公司 | 数据同步方法、数据同步装置、计算机设备和存储介质 |
CN108566417A (zh) * | 2018-03-22 | 2018-09-21 | 四川长虹电器股份有限公司 | 一种基于安卓系统的多线程断点续传下载系统及方法 |
CN109862065A (zh) * | 2018-12-06 | 2019-06-07 | 北京字节跳动网络技术有限公司 | 文件下载方法、装置和电子设备 |
CN110134628A (zh) * | 2019-05-17 | 2019-08-16 | 北京百度网讯科技有限公司 | 消息传输方法、装置、设备及存储介质 |
CN110262816A (zh) * | 2019-05-15 | 2019-09-20 | 深圳市优博讯科技股份有限公司 | 一种断电续传的升级方法及其终端系统 |
CN110336871A (zh) * | 2019-07-01 | 2019-10-15 | 江苏满运软件科技有限公司 | 一种文件处理方法、装置、存储介质及电子设备 |
CN111193777A (zh) * | 2019-12-13 | 2020-05-22 | 佛山欧神诺云商科技有限公司 | 一种基于断点续传的文件下载方法、装置及存储介质 |
CN111262952A (zh) * | 2020-03-27 | 2020-06-09 | 北京环鼎科技有限责任公司 | 用于存储式测井的声波数据文件下载的断点续载方法 |
CN111432033A (zh) * | 2020-04-22 | 2020-07-17 | 深信服科技股份有限公司 | 应用程序下载方法、装置、系统、ios设备及介质 |
CN111600945A (zh) * | 2020-05-13 | 2020-08-28 | 上海英方软件股份有限公司 | 一种基于块传输的ftp服务器断点下载方法及装置 |
CN112181583A (zh) * | 2019-07-05 | 2021-01-05 | 中国电信股份有限公司 | 虚拟化管理系统、方法和计算机可读存储介质 |
WO2022083190A1 (zh) * | 2020-10-19 | 2022-04-28 | 深圳市广和通无线股份有限公司 | 数据下载方法、装置、计算机设备和存储介质 |
CN115292373A (zh) * | 2022-10-09 | 2022-11-04 | 天津南大通用数据技术股份有限公司 | 一种切分数据块的方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101005676A (zh) * | 2007-01-18 | 2007-07-25 | 上海柯斯软件有限公司 | 一种使用移动终端下载网络资源的方法 |
US20070192443A1 (en) * | 2006-01-25 | 2007-08-16 | Samsung Electronics Co., Ltd. | Contents download system using wireless internet platform and method thereof |
CN101312566A (zh) * | 2007-05-25 | 2008-11-26 | 上海美通无线网络信息有限公司 | 一种手机上下载大资源的方法 |
CN101635916A (zh) * | 2009-08-11 | 2010-01-27 | 中兴通讯股份有限公司 | 一种基于多模移动终端的资源下载方法和系统 |
CN102298584A (zh) * | 2010-06-23 | 2011-12-28 | 上海博路信息技术有限公司 | 一种数据动态增长的电子书结构 |
CN102469125A (zh) * | 2010-11-10 | 2012-05-23 | 深圳市奥软网络科技有限公司 | 一种手机多任务下载系统及方法 |
-
2013
- 2013-03-19 CN CN201310089511.0A patent/CN103227812B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070192443A1 (en) * | 2006-01-25 | 2007-08-16 | Samsung Electronics Co., Ltd. | Contents download system using wireless internet platform and method thereof |
CN101005676A (zh) * | 2007-01-18 | 2007-07-25 | 上海柯斯软件有限公司 | 一种使用移动终端下载网络资源的方法 |
CN101312566A (zh) * | 2007-05-25 | 2008-11-26 | 上海美通无线网络信息有限公司 | 一种手机上下载大资源的方法 |
CN101635916A (zh) * | 2009-08-11 | 2010-01-27 | 中兴通讯股份有限公司 | 一种基于多模移动终端的资源下载方法和系统 |
CN102298584A (zh) * | 2010-06-23 | 2011-12-28 | 上海博路信息技术有限公司 | 一种数据动态增长的电子书结构 |
CN102469125A (zh) * | 2010-11-10 | 2012-05-23 | 深圳市奥软网络科技有限公司 | 一种手机多任务下载系统及方法 |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104580285A (zh) * | 2013-10-15 | 2015-04-29 | 镇江雅迅软件有限责任公司 | 一种基于http协议断点续传文件的实现方法 |
CN104375854A (zh) * | 2014-07-25 | 2015-02-25 | 腾讯科技(深圳)有限公司 | 一种应用更新下载方法及用户终端 |
CN105187564A (zh) * | 2015-10-14 | 2015-12-23 | 中科宇图天下科技有限公司 | 一种手机端文件断点续传的方法 |
CN106909414A (zh) * | 2015-12-23 | 2017-06-30 | 北京奇虎科技有限公司 | 应用程序的下载数据处理方法与装置 |
CN106790525A (zh) * | 2016-12-20 | 2017-05-31 | 广东小天才科技有限公司 | 一种文件下载方法及装置 |
CN108429799A (zh) * | 2018-03-01 | 2018-08-21 | 北京天融信网络安全技术有限公司 | 批量文件的并行传输方法、装置及存储介质 |
CN108566417A (zh) * | 2018-03-22 | 2018-09-21 | 四川长虹电器股份有限公司 | 一种基于安卓系统的多线程断点续传下载系统及方法 |
CN108449415A (zh) * | 2018-03-27 | 2018-08-24 | 深圳中兴网信科技有限公司 | 数据同步方法、数据同步装置、计算机设备和存储介质 |
US11064012B2 (en) | 2018-12-06 | 2021-07-13 | Beijing Bytedance Network Technology Co., Ltd. | File downloading method, apparatus, and non-transitory computer-readable storage medium |
CN109862065A (zh) * | 2018-12-06 | 2019-06-07 | 北京字节跳动网络技术有限公司 | 文件下载方法、装置和电子设备 |
CN109862065B (zh) * | 2018-12-06 | 2021-09-14 | 北京字节跳动网络技术有限公司 | 文件下载方法、装置和电子设备 |
CN110262816A (zh) * | 2019-05-15 | 2019-09-20 | 深圳市优博讯科技股份有限公司 | 一种断电续传的升级方法及其终端系统 |
CN110134628A (zh) * | 2019-05-17 | 2019-08-16 | 北京百度网讯科技有限公司 | 消息传输方法、装置、设备及存储介质 |
US11218571B2 (en) | 2019-05-17 | 2022-01-04 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Methods and storage media for transmitting message |
CN110336871A (zh) * | 2019-07-01 | 2019-10-15 | 江苏满运软件科技有限公司 | 一种文件处理方法、装置、存储介质及电子设备 |
CN112181583A (zh) * | 2019-07-05 | 2021-01-05 | 中国电信股份有限公司 | 虚拟化管理系统、方法和计算机可读存储介质 |
CN111193777A (zh) * | 2019-12-13 | 2020-05-22 | 佛山欧神诺云商科技有限公司 | 一种基于断点续传的文件下载方法、装置及存储介质 |
CN111193777B (zh) * | 2019-12-13 | 2021-02-05 | 佛山欧神诺云商科技有限公司 | 一种基于断点续传的文件下载方法、装置及存储介质 |
CN111262952A (zh) * | 2020-03-27 | 2020-06-09 | 北京环鼎科技有限责任公司 | 用于存储式测井的声波数据文件下载的断点续载方法 |
CN111262952B (zh) * | 2020-03-27 | 2023-11-21 | 北京环鼎科技有限责任公司 | 用于存储式测井的声波数据文件下载的断点续载方法 |
CN111432033A (zh) * | 2020-04-22 | 2020-07-17 | 深信服科技股份有限公司 | 应用程序下载方法、装置、系统、ios设备及介质 |
CN111600945A (zh) * | 2020-05-13 | 2020-08-28 | 上海英方软件股份有限公司 | 一种基于块传输的ftp服务器断点下载方法及装置 |
WO2022083190A1 (zh) * | 2020-10-19 | 2022-04-28 | 深圳市广和通无线股份有限公司 | 数据下载方法、装置、计算机设备和存储介质 |
CN115292373A (zh) * | 2022-10-09 | 2022-11-04 | 天津南大通用数据技术股份有限公司 | 一种切分数据块的方法及装置 |
CN115292373B (zh) * | 2022-10-09 | 2023-01-24 | 天津南大通用数据技术股份有限公司 | 一种切分数据块的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103227812B (zh) | 2016-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103227812A (zh) | 智能设备中支持断点续传的下载方法和装置 | |
CN104182255A (zh) | 一种系统应用的库文件升级方法及终端 | |
CN103092673B (zh) | 虚拟机快照处理方法及装置 | |
CN103744695A (zh) | 基于pxe的操作系统远程安装方法和系统 | |
CN103092700A (zh) | 内存清理方法、装置和终端设备 | |
CN101404023A (zh) | 一种对下载的文件进行操作的方法和装置 | |
WO2017107415A1 (zh) | 应用加载方法和装置 | |
CN102750174A (zh) | 文件加载方法及装置 | |
CN103345411A (zh) | 卸载应用程序的方法及装置 | |
CN102760068A (zh) | 一种ActiveX插件加载方法和装置 | |
CN103353846A (zh) | 一种项目自动部署插件 | |
CN111488167A (zh) | 一种小程序的更新方法、装置、设备和计算机可读介质 | |
CN102141921A (zh) | 一种终端设备系统升级方法及终端设备 | |
CN102117330A (zh) | 一种保护嵌入式Linux操作系统关键区域完整性的方法及系统 | |
CN103513956B (zh) | 一种处理器处理数据的方法以及装置 | |
WO2011066261A1 (en) | Fast restart on a virtual machine | |
CN103902562A (zh) | 一种终端数据库升级方法及相关装置 | |
KR100923161B1 (ko) | 작업 환경 이동 서비스를 위한 이동식 저장 장치 및 그의작업 환경 이동 서비스 방법 | |
CN103902302A (zh) | 虚拟机软件安装系统及方法 | |
CN106874343B (zh) | 一种时序数据库的数据删除方法及系统 | |
CN106201584B (zh) | 版本升级方法及终端设备 | |
JP2012146241A (ja) | ソフトウェアアップデート方法、ソフトウェアアップデート装置、及びソフトウェアアップデートプログラム | |
CN101436124A (zh) | 一种嵌入式设备kjava应用程序管理系统及方法 | |
WO2017206302A1 (zh) | 一种应用程序的运行方法和运行装置 | |
CN101833585A (zh) | 数据库服务器操作控制系统、方法及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |