CN108012030A - 一种移动端下载管理方法 - Google Patents
一种移动端下载管理方法 Download PDFInfo
- Publication number
- CN108012030A CN108012030A CN201711231530.7A CN201711231530A CN108012030A CN 108012030 A CN108012030 A CN 108012030A CN 201711231530 A CN201711231530 A CN 201711231530A CN 108012030 A CN108012030 A CN 108012030A
- Authority
- CN
- China
- Prior art keywords
- task
- downloading
- download
- queue
- information
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M1/00—Substation equipment, e.g. for use by subscribers
- H04M1/72—Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
- H04M1/724—User interfaces specially adapted for cordless or mobile telephones
- H04M1/72403—User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality
- H04M1/72406—User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality by software upgrading or downloading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及一种移动端下载管理方法,步骤如下:调用下载模块,获取预设的下载基础信息,获取传入的下载必要信息,解析下载必要信息,产生下载任务标识符,将下载任务标识符传入任务产生器,形成相应的一个或多个下载任务,将下载任务加入任务队列,将任务回调加入回调队列,均通过队列管理器进行调度,开启任务队列中的下载任务,设置下载任务是否可在后台运行,执行下载任务对应的任务回调,给出初始信息,根据初始信息执行下载任务。本发明,支持常见的下载功能,能作为APP中独立的下载模块使用,提高APP下载的安全性,下载流程统一性好,下载稳定可靠,可以作为通用模块,符合工程模块化的潮流,利于提高开发效率,利于纠错及维护。
Description
技术领域
本发明涉及移动端下载管理技术领域,具体说是一种移动端下载管理方法。
背景技术
在iOS中,当某APP需要执行下载操作时,不能通过调用其他APP来完成,而且,使用其他APP进行下载,则存在信息暴露的风险,故必须根据APP自身情况进行下载模块(下载器)的设计。
在封装下载模块前,也使用过第三方的下载模块,但总是会出现无法正常下载等问题,而且很难短时间内了解这个颇为庞大复杂的第三方库,所以比较难以解决出现的bug。
在决定自己封装一个下载模块前,本以为没有那么复杂,可在实际开发过程中困难重重,再加上iOS新版本及开发模块等的发布,更是带来一些意外的麻烦,下载模块的设计远比想象的复杂。目前关于iOS中下载模块出现的bug以及一些特殊情况如何处理的材料基本找不到,整个流程看似简单,但其实都必须仔细斟酌、调试。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种移动端下载管理方法,支持常见的下载功能,能作为APP中独立的下载模块使用,提高APP下载的安全性,下载流程统一性好,下载稳定可靠,可以作为通用模块,符合工程模块化的潮流,利于提高开发效率,利于纠错及维护。
为达到以上目的,本发明采取的技术方案是:
一种移动端下载管理方法,其特征在于,包括如下步骤:
调用下载模块,
获取预设的下载基础信息,
获取传入的下载必要信息,所述下载必要信息包括一个或多个下载任务,
解析下载必要信息,产生下载任务标识符,
将下载任务标识符传入任务产生器,形成相应的一个或多个下载任务,
将下载任务加入任务队列,通过队列管理器进行调度,
将任务回调加入回调队列,通过队列管理器进行调度,
开启任务队列中的下载任务,
设置下载任务是否可在后台运行,
执行下载任务对应的任务回调,给出初始信息,
根据初始信息执行下载任务。
在上述技术方案的基础上,所述预设的下载基础信息至少包括:
下载超时时间,
最大并行下载数。
在上述技术方案的基础上,所述执行下载任务的具体步骤如下:
判断是否产生重定向信息,
如果产生重定向信息,则进一步判断是否产生错误码,
如果产生错误码,则执行结束任务操作,将任务从队列移除,结束本次下载,并执行回调,
如果没有错误码,则结束本次任务,
如果没有重定向信息,则进一步判断是否产生错误码,
如果产生错误码,则执行结束任务操作,将任务从队列移除,结束本次下载,并执行回调,
如果没有错误码,则继续接收数据。
在上述技术方案的基础上,在继续接收数据且收到下载数据后,进入数据存储器,执行接收数据回调。
在上述技术方案的基础上,执行接收数据回调后,判断是否产生下载错误,
如果产生下载错误,则产生错误回调信息,结束任务,结束下载,继续进行队列中其他下载任务,
如果没有下载错误,则进一步判断是否下载完成,
如果已经完成,则执行下载完成回调,结束任务,结束下载,继续进行队列中其他下载任务,
如果没有完成,则继续下载。
在上述技术方案的基础上,在任务产生器中,将任务进度回调和完成回调进行缓存,设置任务基本信息,产生下载任务,根据下载url将任务缓存,形成相应的一个或多个下载任务。
在上述技术方案的基础上,在队列管理器中,设置队列最大并发数,提供当前队列活跃任务数接口,根据队列任务id控制任务是否取消,控制整个队列任务的结束。
在上述技术方案的基础上,在数据存储器中,根据收到的数据产生输入流,根据文件保存路径进入输出流,将输入输出流加入应用循环,并打开,将流数据循环写入文件中,存储结束。
本发明所述的移动端下载管理方法,支持常见的下载功能,能作为APP中独立的下载模块使用,提高APP下载的安全性,下载流程统一性好,下载稳定可靠,可以作为通用模块,符合工程模块化的潮流,利于提高开发效率,利于纠错及维护。
附图说明
本发明有如下附图:
图1 本发明的流程图。
图2 执行下载任务的流程图。
图3 数据存储器的流程图。
图4 任务产生器的流程图。
图5 队列管理器的流程图。
具体实施方式
以下结合附图对本发明作进一步详细说明。
如图1、2所示,本发明所述的移动端下载管理方法,包括如下步骤:
调用(进入)下载模块,
获取预设的下载基础信息,
获取传入的下载必要信息,所述下载必要信息包括一个或多个下载任务,此时,下载必要信息中的下载任务,并非等同于下载模块内真实的下载任务,而是记录着建立真实的下载任务所必须的信息的中间载体,可以是下载地址信息,可以是真实的下载任务的导出备份信息,可以是批量建立真实的下载任务的批量下载信息,等等,是创建真实的下载任务的基础,
解析下载必要信息,产生下载任务标识符,任务标识符(任务id)唯一标识各下载任务,
将下载任务标识符传入任务产生器,形成相应的一个或多个下载任务,此即下载模块内真实的下载任务,
将下载任务加入任务队列,通过队列管理器进行调度,
将任务回调加入回调队列,通过队列管理器进行调度,
开启任务队列中的下载任务,
设置下载任务是否可在后台运行,
执行下载任务对应的任务回调,给出初始信息,
根据初始信息执行下载任务。
在上述技术方案的基础上,所述预设的下载基础信息至少包括:
下载超时时间,
最大并行下载数。
在上述技术方案的基础上,所述执行下载任务的具体步骤如下:
判断是否产生重定向信息,
如果产生重定向信息,则进一步判断是否产生错误码,
如果产生错误码,则执行结束任务操作,将任务从队列移除,结束本次下载,并执行回调,
如果没有错误码,则结束本次任务,
如果没有重定向信息,则进一步判断是否产生错误码,
如果产生错误码,则执行结束任务操作,将任务从队列移除,结束本次下载,并执行回调,
如果没有错误码,则继续接收数据。
在上述技术方案的基础上,在继续接收数据且收到下载数据后,进入数据存储器,执行接收数据回调。
在上述技术方案的基础上,执行接收数据回调后,判断是否产生下载错误,
如果产生下载错误,则产生错误回调信息,结束任务,结束下载,继续进行队列中其他下载任务,
如果没有下载错误,则进一步判断是否下载完成,
如果已经完成,则执行下载完成回调,结束任务,结束下载,继续进行队列中其他下载任务,
如果没有完成,则继续下载。
在上述技术方案的基础上,如图3所示,在数据存储器中,根据收到的数据产生输入流,根据文件保存路径进入输出流,将输入输出流加入应用循环,并打开,将流数据循环写入文件中,存储结束。
在上述技术方案的基础上,如图4所示,在任务产生器中,将任务进度回调和完成回调进行缓存,设置任务基本信息,产生下载任务,根据下载url将任务缓存,形成相应的一个或多个下载任务。
在上述技术方案的基础上,如图5所示,在队列管理器中,设置队列最大并发数,提供当前队列活跃任务数接口,根据队列任务id控制任务是否取消,控制整个队列任务的结束。所述任务id即指任务标识符。
本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (8)
1.一种移动端下载管理方法,其特征在于,包括如下步骤:
调用下载模块,
获取预设的下载基础信息,
获取传入的下载必要信息,所述下载必要信息包括一个或多个下载任务,所述下载任务为记录着建立真实的下载任务所必须的信息的中间载体,真实的下载任务指下载模块内的下载任务,
解析下载必要信息,产生下载任务标识符,
将下载任务标识符传入任务产生器,形成相应的一个或多个下载任务,即真实的下载任务,
将下载任务加入任务队列,通过队列管理器进行调度,
将任务回调加入回调队列,通过队列管理器进行调度,
开启任务队列中的下载任务,
设置下载任务是否可在后台运行,
执行下载任务对应的任务回调,给出初始信息,
根据初始信息执行下载任务。
2.如权利要求1所述的移动端下载管理方法,其特征在于:所述预设的下载基础信息至少包括:
下载超时时间,
最大并行下载数。
3.如权利要求1所述的移动端下载管理方法,其特征在于:所述执行下载任务的具体步骤如下:
判断是否产生重定向信息,
如果产生重定向信息,则进一步判断是否产生错误码,
如果产生错误码,则执行结束任务操作,将任务从队列移除,结束本次下载,并执行回调,
如果没有错误码,则结束本次任务,
如果没有重定向信息,则进一步判断是否产生错误码,
如果产生错误码,则执行结束任务操作,将任务从队列移除,结束本次下载,并执行回调,
如果没有错误码,则继续接收数据。
4.如权利要求3所述的移动端下载管理方法,其特征在于:在继续接收数据且收到下载数据后,进入数据存储器,执行接收数据回调。
5.如权利要求4所述的移动端下载管理方法,其特征在于:执行接收数据回调后,判断是否产生下载错误,
如果产生下载错误,则产生错误回调信息,结束任务,结束下载,继续进行队列中其他下载任务,
如果没有下载错误,则进一步判断是否下载完成,
如果已经完成,则执行下载完成回调,结束任务,结束下载,继续进行队列中其他下载任务,
如果没有完成,则继续下载。
6.如权利要求1所述的移动端下载管理方法,其特征在于:在任务产生器中,将任务进度回调和完成回调进行缓存,设置任务基本信息,产生下载任务,根据下载url将任务缓存,形成相应的一个或多个下载任务。
7.如权利要求1所述的移动端下载管理方法,其特征在于:在队列管理器中,设置队列最大并发数,提供当前队列活跃任务数接口,根据队列任务id控制任务是否取消,控制整个队列任务的结束。
8.如权利要求4所述的移动端下载管理方法,其特征在于:在数据存储器中,根据收到的数据产生输入流,根据文件保存路径进入输出流,将输入输出流加入应用循环,并打开,将流数据循环写入文件中,存储结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711231530.7A CN108012030A (zh) | 2017-11-30 | 2017-11-30 | 一种移动端下载管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711231530.7A CN108012030A (zh) | 2017-11-30 | 2017-11-30 | 一种移动端下载管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108012030A true CN108012030A (zh) | 2018-05-08 |
Family
ID=62054930
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711231530.7A Pending CN108012030A (zh) | 2017-11-30 | 2017-11-30 | 一种移动端下载管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108012030A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109729165A (zh) * | 2018-12-28 | 2019-05-07 | 国云科技股份有限公司 | 一种采用本地缓存策略实现文件下载的系统及方法 |
CN110417912A (zh) * | 2019-08-08 | 2019-11-05 | 成都九洲电子信息系统股份有限公司 | 一种文件下载完成后回调的方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445665A (zh) * | 2016-09-19 | 2017-02-22 | 武汉斗鱼网络科技有限公司 | 一种应用于android系统的系统文件下载方法及下载工具 |
CN106713395A (zh) * | 2015-11-17 | 2017-05-24 | 腾讯科技(深圳)有限公司 | 数据下载方法和装置 |
-
2017
- 2017-11-30 CN CN201711231530.7A patent/CN108012030A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106713395A (zh) * | 2015-11-17 | 2017-05-24 | 腾讯科技(深圳)有限公司 | 数据下载方法和装置 |
CN106445665A (zh) * | 2016-09-19 | 2017-02-22 | 武汉斗鱼网络科技有限公司 | 一种应用于android系统的系统文件下载方法及下载工具 |
Non-Patent Citations (5)
Title |
---|
CSDN_DAMON: "使用URLSession", 《WWW.BAIDU.COM》 * |
DEVDIV移动开发社区: "《iOS开发实战体验》", 31 August 2012, 海洋出版社 * |
LANXUPING: "使用NSURLSession进行重定向", 《WWW.BAIDU.COM》 * |
MEETLY: "ASDownload", 《HTTP://GITHUB.COM/MEETLY/ASDOWNLOAD》 * |
MOB_DEVELOPER: "NSURLSession(URL会话)", 《WWW.BAIDU.COM》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109729165A (zh) * | 2018-12-28 | 2019-05-07 | 国云科技股份有限公司 | 一种采用本地缓存策略实现文件下载的系统及方法 |
CN110417912A (zh) * | 2019-08-08 | 2019-11-05 | 成都九洲电子信息系统股份有限公司 | 一种文件下载完成后回调的方法 |
CN110417912B (zh) * | 2019-08-08 | 2022-01-28 | 成都九洲电子信息系统股份有限公司 | 一种文件下载完成后回调的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110351342A (zh) | 业务指令处理方法、装置、计算机设备和存储介质 | |
CN107766132A (zh) | 多任务调度方法、应用服务器及计算机可读存储介质 | |
CN107908680A (zh) | 微信公众号的管理方法、电子装置及计算机可读存储介质 | |
CN105045602B (zh) | 一种构建Hadoop应用开发框架的方法、装置及电子装置 | |
CN106412861B (zh) | 一种短信分发方法及系统 | |
CN107689982A (zh) | 多数据源数据同步方法、应用服务器及计算机可读存储介质 | |
US10506392B1 (en) | Stream-processing of telecommunication diameter event records | |
CN106326099B (zh) | 一种用于程序跟踪的方法、装置及电子设备 | |
CN108012030A (zh) | 一种移动端下载管理方法 | |
CN108519987A (zh) | 一种数据持久化方法和装置 | |
CN108900627B (zh) | 一种网络请求方法、终端装置及存储介质 | |
CN110413395A (zh) | 服务调用预热方法、装置、设备及存储介质 | |
CN104731650A (zh) | 系统接口调用信息的获取方法和装置 | |
CN111294377B (zh) | 一种依赖关系的网络请求发送方法、终端装置及存储介质 | |
CN105847319A (zh) | 一种移动终端网络请求方法及系统 | |
CN103197950B (zh) | 插件虚拟机实现方法 | |
CN103457784A (zh) | 性能测试方法和装置 | |
CN111443922B (zh) | 一种大数据平台的前端组件部署方法和装置 | |
CN107506292A (zh) | 一种多级非均匀目录下随机读时延的自动化测试方法 | |
CN106227592A (zh) | 任务调用方法及任务调用装置 | |
CN114466047B (zh) | 物联网设备便捷接入物联网平台的方法、平台、设备及介质 | |
CN109547318A (zh) | Vpn数据报文的处理方法、装置、电子设备 | |
CN108681448A (zh) | Ios系统的网络请求方法、存储介质、电子设备及系统 | |
CN106371899A (zh) | 一种线程参数的处理方法及装置 | |
CN107896284A (zh) | 一种移动端下载管理的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180508 |