CN103595770B - Sdk实现文件下载的方法与装置 - Google Patents
Sdk实现文件下载的方法与装置 Download PDFInfo
- Publication number
- CN103595770B CN103595770B CN201310522737.5A CN201310522737A CN103595770B CN 103595770 B CN103595770 B CN 103595770B CN 201310522737 A CN201310522737 A CN 201310522737A CN 103595770 B CN103595770 B CN 103595770B
- Authority
- CN
- China
- Prior art keywords
- download
- file
- downloaded
- interface
- function
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 73
- 230000006870 function Effects 0.000 claims abstract description 156
- 238000005538 encapsulation Methods 0.000 claims description 30
- 230000008569 process Effects 0.000 claims description 25
- 238000012546 transfer Methods 0.000 claims description 8
- 230000007613 environmental effect Effects 0.000 claims description 4
- 238000011161 development Methods 0.000 description 25
- 230000018109 developmental process Effects 0.000 description 25
- 230000007547 defect Effects 0.000 description 6
- 239000000203 mixture Substances 0.000 description 6
- 230000009471 action Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000013480 data collection Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 235000014510 cooky Nutrition 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001035 drying Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
Landscapes
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种SDK实现文件下载的方法与装置,其中,SDK应用于云存储系统,所述方法包括:接收文件下载指令,所述文件下载指令中携带有待下载文件的信息;根据所述文件下载指令和所述待下载文件的信息,从云存储端获取所述待下载文件,并且,获取下载所述待下载文件的统一上下文环境;通过下载接口中设定的应用回调信息类中的成员变量,调用所述下载接口中封装的多个文件下载函数,使所述多个文件下载函数使用所述统一上下文环境进行所述待下载文件的下载。通过本发明,减少了开发人员的开发难度和提高了开发效率和开发质量。
Description
技术领域
本发明涉及通信技术领域,特别是涉及一种基于Android系统的SDK(SoftwareDevelopment Kit,软件开发工具包)实现文件下载的方法与装置。
背景技术
SDK是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合,它可以简单地为某个程序设计语言提供API(Application Programming Interface,应用程序编程接口)的一些文件,但也可能包括能与某种嵌入式系统通讯的复杂的硬件。
随着云存储技术的发展,SDK越来越多地被用于开发与云存储相关的应用中。云存储通过集群应用、网格技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能。目前,云存储提供的最常用的业务访问功能包括数据上传和下载。开发人员在使用现有的SDK进行云存储的上传任务和下载任务的开发时,不但需要熟悉上传和下载所使用的各个SDK的接口的实现方式和功能,更需要熟悉上传和下载的各个任务环节,并能够正确选择各个任务环节所使用的API接口。
但是,这种开发方式一方面对开发人员要求较高,造成开发困难,开发速度慢,开发成本高;另一方面,可能因为API接口选择的不恰当,造成开发出的任务效率低下,缺陷较多,需要后续不断进行版本升级和改进。
发明内容
鉴于上述现有的SDK实现文件下载时,开发速度慢,开发成本高,效率低下,缺陷较多的问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的SDK实现文件下载的方法与装置。
依据本发明的一个方面,提供了一种软件开发工具包实现文件下载的方法,所述软件开发工具包应用于云存储系统,所述方法包括:接收文件下载指令,所述文件下载指令中携带有待下载文件的信息;根据所述文件下载指令和所述待下载文件的信息,从云存储端获取所述待下载文件,并且,获取下载所述待下载文件的统一上下文环境;通过下载接口中设定的应用回调信息类中的成员变量,调用所述下载接口中封装的多个文件下载函数,使所述多个文件下载函数使用所述统一上下文环境进行所述待下载文件的下载。
可选地,所述多个文件下载函数通过以下方式预先封装在所述下载接口中:对所述云存储系统的文件下载流程进行分析,从所有文件下载函数中获取完成文件下载任务的基本函数;将所述基本函数抽象为所述应用回调信息类,并根据所述基本函数定义所述应用回调信息类中的成员变量;使用所述成员变量在所述基本函数间传递参数,并按照所述文件下载流程确定所述基本函数的调用顺序;将所述应用回调信息类和确定了调用顺序的所述基本函数封装成所述下载接口。
可选地,所述下载接口中还封装有下载历史记录函数;在所述接收文件下载指令的步骤之后,还包括:使用所述下载接口中的所述应用回调信息类中的成员变量,调用所述下载接口中封装的所述下载历史记录函数,通过所述下载历史记录函数判断发送所述文件下载指令的客户端是否已下载过所述待下载文件;若已下载过,则判断所述客户端中已下载的所述待下载文件是否有效;若有效,则结束所述待下载文件的下载;若无效或者若未下载过所述待下载文件,则执行所述根据所述文件下载指令和所述待下载文件的信息,从云存储端获取所述待下载文件,并且,获取下载所述待下载文件的统一上下文环境的步骤。
可选地,所述下载接口中还封装有下载线程参数;在所述根据所述文件下载指令和所述待下载文件的信息,从云存储端获取所述待下载文件,并且,获取下载所述待下载文件的统一上下文环境的步骤之前,还包括:接收下载线程参数设置指令,根据所述下载线程参数设置指令设置的下载线程参数,启动所述下载线程参数指示数量的下载线程进行所述待下载文件的下载。
可选地,所述通过下载接口中设定的应用回调信息类中的成员变量,调用所述下载接口中封装的多个文件下载函数的步骤包括:所述下载接口通过使用设定的应用回调信息类中的成员变量以及句柄参数,调用所述下载接口中封装的多个文件下载函数;其中,所述句柄参数用于在所述多个文件下载函数之间传达消息。
根据本发明的另一方面,提供了一种软件开发工具包实现文件下载的装置,所述软件开发工具包应用于云存储系统,所述装置包括:接收模块,用于接收文件下载指令,所述文件下载指令中携带有待下载文件的信息;获取模块,用于根据所述文件下载指令和所述待下载文件的信息,从云存储端获取所述待下载文件,并且,获取下载所述待下载文件的统一上下文环境;下载模块,用于通过下载接口中设定的应用回调信息类中的成员变量,调用所述下载接口中封装的多个文件下载函数,使所述多个文件下载函数使用所述统一上下文环境进行所述待下载文件的下载。
可选地,所述软件开发工具包实现文件下载的装置还包括:封装模块,用于将所述多个文件下载函数通过以下方式预先封装在所述上下载接口中:对所述云存储系统的文件下载流程进行分析,从所有文件下载函数中获取完成文件下载任务的基本函数;将所述基本函数抽象为所述应用回调信息类,并根据所述基本函数定义所述应用回调信息类中的成员变量;使用所述成员变量在所述基本函数间传递参数,并按照所述文件下载流程确定所述基本函数的调用顺序;将所述应用回调信息类和确定了调用顺序的所述基本函数封装成所述下载接口。
可选地,所述下载接口中还封装有下载历史记录函数;所述软件开发工具包实现文件下载的装置还包括:有效判定模块,用于在所述接收模块接收文件下载指令之后,使用所述下载接口中的所述应用回调信息类中的成员变量,调用所述下载接口中封装的所述下载历史记录函数,通过所述下载历史记录函数判断发送所述文件下载指令的客户端是否已下载过所述待下载文件;若已下载过,则判断所述客户端中已下载的所述待下载文件是否有效;若有效,则结束所述待下载文件的下载;若无效或者若未下载过所述待下载文件,则进入所述获取模块。
可选地,所述下载接口中还封装有下载线程参数;所述软件开发工具包实现文件下载的装置还包括:线程设置模块,用于在所述获取模块根据所述文件下载指令和所述待下载文件的信息,从云存储端获取所述待下载文件,并且,获取下载所述待下载文件的统一上下文环境之前,接收下载线程参数设置指令,根据所述下载线程参数设置指令设置的下载线程参数,启动所述下载线程参数指示数量的下载线程进行所述待下载文件的下载。
可选地,所述下载模块在通过下载接口中设定的应用回调信息类中的成员变量,调用所述下载接口中封装的多个文件下载函数时:由所述下载接口通过使用设定的应用回调信息类中的成员变量以及句柄参数,调用所述下载接口中封装的多个文件下载函数;其中,所述句柄参数用于在所述多个文件下载函数之间传达消息。
本申请中,SDK的下载接口提供了较好的对外合作机制,该下载接口通过对云存储端下载文件的方法进行抽象和封装,生成具有应用回调信息类中的成员变量和多个文件下载函数。在使用该SDK进行文件下载时,一次性获取下载待下载文件的统一上下文环境,在该统一上下文环境下,通过下载接口中的应用回调信息类中的成员变量调用文件下载函数,即可实现文件下载,无需开发人员熟悉下载文件所使用的各个SDK的接口的实现方式和功能,也无需开发人员熟悉下载文件的各个任务环节和各个任务环节所使用的API接口,从而大幅减少了开发人员的开发难度和提高了开发效率和开发质量,加快了开发速度,降低了开发成本,有效避免了开发缺陷。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是根据本发明实施例一的一种SDK实现文件下载的方法的步骤流程图;
图2是根据本发明实施例二的一种SDK实现文件下载的方法的步骤流程图;
图3是根据本发明实施例三的一种SDK实现文件下载的方法的步骤流程图;
图4是根据本发明实施例四的一种SDK实现文件下载的装置的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
实施例一
参照图1,示出了根据本发明实施例一的一种SDK实现文件下载的方法的步骤流程图。
本实施例的SDK实现文件下载的方法应用于云存储系统,该方法包括以下步骤:
步骤S102:接收文件下载指令。
其中,该文件下载指令中携带有待下载文件的信息。
当客户端需要下载文件时,会向云存储端服务器发送文件下载指令,该指令中携带有待下载文件的相关信息,如待下载文件所在的位置,文件大小、待存储的位置等等信息。云存储端服务器从文件下载指令中获取这些待下载文件的信息。
步骤S104:根据文件下载指令和待下载文件的信息,从云存储端获取待下载文件,并且,获取下载待下载文件的统一上下文环境。
云存储系统包括客户端和云端,云端包括至少一台用于存储数据的服务器,本发明实施例中简称为云存储端,该云存储端存储有待下载的文件。
其中,与传统下载文件时,每调用一个函数或接口需要获取一次上下文环境不同,本发明中,云存储端服务器在获取待下载文件时,获取下载待下载文件的统一上下文环境,该统一上下文环境仅需一次获取,并在后续该待下载文件的所有下载过程中使用。
步骤S106:通过下载接口中设定的应用回调信息类中的成员变量,调用下载接口中封装的多个文件下载函数,使多个文件下载函数使用统一上下文环境进行待下载文件的下载。
下载接口中的应用回调信息类中的成员变量和多个文件下载函数为对云存储系统的文件下载流程进行分析后确定,可以仅包括实现文件下载功能的基本函数(也即核心函数,基本函数中的任何一个缺少都不能够完成文件下载功能),如,获取下载文件的相关数据(包括文件名、大小、位置、文件上下文环境、文件数据等)对应的各个函数,以及根据下载文件相关数据将文件下载至指定位置对应的各个函数;而其它功能函数则可排除在外,如,文件下载进度显示函数、界面提示函数等等不影响文件下载功能的函数都可排除在外。
应用回调信息类中的成员变量可以将多个文件下载函数按照文件下载任务的执行顺序连接起来,在获取的统一上下文环境中依次执行,实现文件的下载。如上所述,各个文件下载函数在执行时,均使用已获取的统一上下文环境,无需分别逐次获取。
通过本实施例,SDK的下载接口提供了较好的对外合作机制,该下载接口通过对云存储端下载文件的方法进行抽象和封装,生成具有应用回调信息类中的成员变量和多个文件下载函数。在使用该SDK进行文件下载时,一次性获取下载待下载文件的统一上下文环境,在该统一上下文环境下,通过下载接口中的应用回调信息类中的成员变量调用文件下载函数,即可实现文件下载,无需开发人员熟悉下载文件所使用的各个SDK的接口的实现方式和功能,也无需开发人员熟悉下载文件的各个任务环节和各个任务环节所使用的API接口,从而大幅减少了开发人员的开发难度和提高了开发效率和开发质量,加快了开发速度,降低了开发成本,有效避免了开发缺陷。
实施例二
参照图2,示出了根据本发明实施例二的一种SDK实现文件下载的方法的步骤流程图。
本实施例的SDK实现文件下载的方法应用于云存储系统,该方法包括以下步骤:
步骤S202:封装SDK的下载接口。
本实施例中,一种优选的封装SDK下载接口的方式包括:对云存储系统的文件下载流程进行分析,从所有文件下载函数中获取完成文件下载任务的基本函数;将基本函数抽象为应用回调信息类,并根据基本函数定义应用回调信息类中的成员变量;使用成员变量在基本函数间传递参数,并按照文件下载流程确定基本函数的调用顺序;将应用回调信息类和确定了调用顺序的基本函数封装成SDK的下载接口。
上述对云存储系统的文件下载流程进行分析,从所有文件下载函数中获取完成文件下载任务的基本函数,以及,将基本函数抽象为应用回调信息类,并根据基本函数定义应用回调信息类中的成员变量的过程在实际操作中,可以由本领域技术人员人工完成,也可以采用成熟的人工智能模型实现,当然,其它可行的适当方式也同样适用。
在一个优选实施例中,SDK的下载接口中还封装了下载线程参数,该下载线程参数用于指示下载所述待下载文件时使用的线程数量。通过下载线程参数,可以灵活地对下载文件的线程数量进行设置,提高文件下载的灵活性。
步骤S204:SDK接收文件下载指令,该文件下载指令中携带有待下载文件的信息。
步骤S206:SDK根据文件下载指令和待下载文件的信息,从云存储端获取待下载文件,并且,获取下载所述待下载文件的统一上下文环境。
该统一上下文环境在本实施例的后续文件下载过程中一直使用。
优选地,当SDK的下载接口中封装有下载线程参数时,在SDK根据文件下载指令和待下载文件的信息,从云存储端获取待下载文件,并且,获取下载所述待下载文件的统一上下文环境的步骤之前,还包括:接收下载线程参数设置指令,根据下载线程参数设置指令设置的下载线程参数,启动下载线程参数指示数量的下载线程进行待下载的文件的下载。如,下载线程参数设置指令中的下载线程参数指示使用5个线程进行文件下载,则SDK下载接口会启动5个线程从云存储端获取待下载文件的文件数据块,进而进行文件下载。其中,下载线程参数设置指令可以由下载文件的设备针对每个待下载的文件设置并发送,也可以采用默认的设置值,发送给SDK。
步骤S208:SDK通过下载接口中设定的应用回调信息类中的成员变量,调用下载接口中封装的多个文件下载函数。
在一个可选实施例中,下载接口通过使用设定的应用回调信息类中的成员变量以及句柄参数,调用下载接口中封装的多个文件下载函数;其中,所述句柄参数用于在多个文件下载函数之间传达消息。
步骤S210:SDK使用多个文件下载函数使用统一上下文环境进行待下载文件的下载。
在本发明的一个可选实施例中,下载接口中还封装有下载历史记录函数。当下载接口中封装有下载历史记录函数时,在SDK接收文件下载指令的步骤之后,还包括:使用下载接口中的应用回调信息类中的成员变量,调用下载接口中封装的下载历史记录函数,通过下载历史记录函数判断发送文件下载指令的客户端是否已下载过待下载文件;若已下载过,则判断客户端中已下载的待下载文件是否有效;若有效,则结束待下载文件的下载;若无效或者若未下载过待下载文件,则执行步骤S206。通过下载历史记录函数,可以有效避免文件的重复下载。
通过本实施例,在使用SDK进行文件下载时,一次性获取下载待下载文件的统一上下文环境,在该统一上下文环境下,通过下载接口中的应用回调信息类中的成员变量调用文件下载函数,即可实现文件下载,无需开发人员熟悉下载文件所使用的各个SDK的接口的实现方式和功能,也无需开发人员熟悉下载文件的各个任务环节和各个任务环节所使用的API接口,从而大幅减少了开发人员的开发难度和提高了开发效率和开发质量,加快了开发速度,降低了开发成本,有效避免了开发缺陷。
实施例三
本实施例以具体实例对本发明的SDK实现文件下载的方法进行说明,该方法应用于云存储系统。
本实施例的SDK实现文件下载的方法包括以下步骤:
步骤一:生成SDK的下载接口。
以下,从多个方面对生成SDK的下载接口的过程进行说明。
(一)软件环境需求:
a、开发环境:android2.1及2.1以上;
b、需要的权限:至少包括生成SDK所需要进行的访问的权限,以android应用的权限配置为例,如:
c、必要条件
(1)、设置Aplication(应用)对象,通过获取应用的Aplication对象,可以让SDK得到当前应用的上下文环境,如当前下载的文件的统一上下文环境。Application对象是android框架的一个系统组件,当android程序启动时系统会创建一个application对象,用来存储系统的一些信息。android系统会为每个程序运行时创建一个Application类的对象且仅创建一个,所以Application可以说是单例(singleton)模式的一个类,且Application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期。因为它是全局的单例的,所以通过Application对象来进行一些数据传递、数据共享、数据缓存等操作。
如:设置
com.qihoo.yunpan.sdk.android.config.YunpanApplication.setApplication()方法;
或者,设置
<application android:name=
"com.qihoo.yunpan.sdk.android.config.YunpanApplication".../>中的一个。
(2)、设置开发权限
如,key(AUTH_NAME,AUTH_KEY,AUTH_SECRET)必须赋值给com.qihoo.yunpan.sdk.android.config.YunpanSDKConstants中对应的值。
(3)、必须实现
com.qihoo.yunpan.sdk.android.config.YunpanSDKConstants.setYunpanInterface(IYunpanInterface yunpanInterface)接口,以保证实现文件下载任务的安全性。
通过该接口实现onNewUserToken函数和onUserCookieInvalid函数,其中,onNewUserToken函数用于刷新用户token,onUserCookieInvalid用于当用户cookie失效时,要求用户必须重新登陆。
(二)
对云存储系统的文件下载流程进行分析,从所有文件下载函数中获取完成文件下载任务的基本函数;将基本函数抽象为应用回调信息类,并根据基本函数定义应用回调信息类中的成员变量;使用成员变量在基本函数间传递参数,并按照文件下载流程确定基本函数的调用顺序;将应用回调信息类和确定了调用顺序的基本函数封装成SDK的下载接口。例如,云存储系统在进行文件下载时,由客户端发送文件下载指令,而云存储端服务器接收到文件下载指令后,得知有文件下载任务,开始获取文件数据块,进而根据文件下载指令将获取到的文件数据块下载至指定位置。对该流程进行分析后,确定对于SDK来说,获取下载文件的相关数据(包括文件名、大小、位置、文件上下文环境、文件数据等)对应的各个函数,以及根据下载文件相关数据将文件下载至指定位置对应的各个函数均可被认为是基本函数,对这些基本函数进行抽象和封装,最终生成SDK的下载接口。
(1)抽象成的统一的应用回调信息类为:
Class com.qihoo.yunpan.sdk.android.task.TransferStatus;其包括的成员变量有:
名称:actionType
类型:ActionType,描述:当前传送状态
名称:localFileName
类型:String,描述:本地文件名
名称:remoteFileName
类型:String,描述:云存储端文件名
名称:requestCode
类型:String,描述:请求code(应用自行控制)
其中,ActionType(消息类型枚举)为com.qihoo.yunpan.sdk.android.task.TransferStatus.ActionType,其值包括:
名称:NULL
描述:无意义
名称:DOWNLOAD_PROCESSING
描述:下载任务处理中
名称:DOWNLOAD_TRANSFER_DATA
描述:下载任务中正在下载数据
名称:DOWNLOAD_COMPLETE
描述:下载任务完成
(2)构造文件下载函数,实现文件下载任务
如,生成Class com.qihoo.yunpan.sdk.android.task.DownloadTask类
构造函数:DownloadTask()
参数1:(名称:localFileName,类型:String,描述:本地文件名)
参数2:(名称:remoteFileName,类型:String,描述:云存储端文件名)
参数3:(名称:download_handler,类型:Handler,描述:传达消息)
实现上述应用回调信息类和下载函数后,即可封装为下载接口向外提供。
优选地,在下载接口中还可以设置下载进度步长:(默认为5%触发一次,最小1,最大20),可以通过调用setProgressStep()和getProgressStep()方法设置返回数据集的位置。
优选地,在下载接口中还可以设置停止当前任务:(如果重新开始,请将当前任务重新在线程容器中启动),可以通过调用setIsRun(false)停止当前任务。
优选地,在下载接口中还可以设置单任务运行时的线程数:(默认为1,最大5),可以通过调用setDownloadThreadNum(下载任务线程数)设置。通过设置线程数,实现SDK封装的下载任务支持JAVA标准的多线程环境。
其它主要云盘SDK方法还包括:
a、用户注册(UserIntfRegister)
生成Class com.qihoo.yunpan.sdk.android.http.action.UserIntfRegister类
构造函数如下:
函数名:doUserIntfRegister()
参数1:(名称:userName,类型:String,描述:用户名)
参数2:(名称:passWord,类型:String,描述:密码)
(如果调用完获取验证码接口后,请将sc参数通过setSc()传入,setCaptcha()方法传入用户输入的验证码)
返回类型:UserCenterInfo
(如果返回值中的errno=5010,需要调用方法获取验证码(UserIntfGetCaptcha)获取)
b、用户登录(UserIntfLogin)
生成Class com.qihoo.yunpan.sdk.android.http.action.UserIntfLogin类
构造函数如下:
函数名:login()
参数1:(名称:username,类型:String,描述:用户名)
参数2:(名称:passWord,类型:String,描述:密码)
参数3:(名称:captcha,类型:String,描述:用户输入的验证码)
参数4:(名称:sc,类型:String,描述:服务器返回的sc参数)
(如果调用完获取验证码接口后,请将captcha和sc参数赋值,没有验证码时给空值)
返回类型:UserCenterInfo
(如果返回值中的errno=5010,需要调用方法获取验证码(UserIntfGetCaptcha)获取)
c、获取云盘列表(FileGetNodeList)
生成Class com.qihoo.yunpan.sdk.android.http.action.getNodeList类
构造函数如下:
函数名:getNodeList()
参数:(名称:path,类型:String,描述:云盘目录,/为根目录)
返回类型:FileNodeList
分页功能:(两项同时设置才生效,默认为从0开始全部)
包括:通过调用setStart()和getStart()方法设置返回数据集的位置,通过调用setCount()和getCount()方法设置返回数据集的数量;实现排序功能:通过调用setOrderParam()和getOrderParam()方法设置排序字段(默认为按文件名排序),通过调用setIsdesc()和isIsdesc()方法设置正序或倒序(默认为正序);设置内部类
enum com.qihoo.yunpan.sdk.android.http.action.getNodeList.OrderType
该内部类枚举类型的值包括:
名称:name
描述:按文件名
名称:mtime
描述:按修改时间
名称:fsize
描述:按文件大小
上述其它主要云盘SDK方法中的一种或多种均可以可选方式封装入下载接口中,为用户下载文件提供更好的使用体验。
步骤二:使用生成的SDK下载接口下载文件。
一种使用步骤一中生成的下载接口下载文件的流程如图3所示,该流程包括:
步骤S302:接收文件下载指令,下载任务开始。
步骤S304:SDK下载接口中的文件下载函数获取下载任务信息。
其中,获取的下载任务信息包括:待下载文件的信息和待下载文件的统一上下文环境。
步骤S306:SDK下载接口中的文件下载函数判断待下载的文件数据在客户端本地是否已存在,若否,则执行步骤S308;若是,则执行步骤S312。
步骤S308:SDK下载接口中的文件下载函数获取待下载的文件的文件块信息。
步骤S310:若本次文件下载完成,则转步骤S312;否则,本次文件下载失败。
步骤S312:SDK下载接口中的文件下载函数提示下载完成。
通过本实施例,实现了在android系统的移动终端上,通过SDK实现文件下载的任务,大幅减少了移动终端开发人员的开发难度和提高了移动终端开发效率和开发质量,加快了开发速度,降低了开发成本,有效避免了开发缺陷。
实施例四
参照图4,示出了根据本发明实施例四的一种SDK实现文件下载的装置的结构框图。
本实施例的SDK实现文件下载的装置中的SDK应用于云存储系统,该装置包括:接收模块402,用于接收文件下载指令,该文件下载指令中携带有待下载文件的信息;获取模块404,用于根据文件下载指令和待下载文件的信息,从云存储端获取待下载文件,并且,获取下载待下载文件的统一上下文环境;下载模块406,用于通过下载接口中设定的应用回调信息类中的成员变量,调用下载接口中封装的多个文件下载函数,使多个文件下载函数使用统一上下文环境进行待下载文件的下载。
优选地,本实施例的SDK实现文件下载的装置还包括:封装模块408,用于将多个文件下载函数通过以下方式预先封装在上下载接口中:对云存储系统的文件下载流程进行分析,从所有文件下载函数中获取完成文件下载任务的基本函数;将基本函数抽象为应用回调信息类,并根据基本函数定义应用回调信息类中的成员变量;使用成员变量在基本函数间传递参数,并按照文件下载流程确定基本函数的调用顺序;将应用回调信息类和确定了调用顺序的基本函数封装成下载接口。
优选地,下载接口中还封装有下载历史记录函数;本实施例的SDK实现文件下载的装置还包括:有效判定模块410,用于在接收模块402接收文件下载指令之后,使用下载接口中的应用回调信息类中的成员变量,调用下载接口中封装的下载历史记录函数,通过下载历史记录函数判断发送文件下载指令的客户端是否已下载过待下载文件;若已下载过,则判断客户端中已下载的待下载文件是否有效;若有效,则结束待下载文件的下载;若无效或者若未下载过待下载文件,则进入获取模块404。
优选地,下载接口中还封装有下载线程参数;;本实施例的SDK实现文件下载的装置还包括:线程设置模块412,用于在获取模块404根据文件下载指令和待下载文件的信息,从云存储端获取待下载文件,并且,获取下载待下载文件的统一上下文环境之前,接收下载线程参数设置指令,根据下载线程参数设置指令设置的下载线程参数,启动下载线程参数指示数量的下载线程进行待下载文件的下载。
优选地,下载模块406在通过下载接口中设定的应用回调信息类中的成员变量,调用下载接口中封装的多个文件下载函数时:由下载接口通过使用设定的应用回调信息类中的成员变量以及句柄参数,调用下载接口中封装的多个文件下载函数;其中,句柄参数用于在多个文件下载函数之间传达消息。
本实施例的SDK实现文件下载的装置用于实现前述多个方法实施例中相应的SDK实现文件下载的方法,并具有相应的方法实施例的有益效果,在此不再赘述。
在此提供的SDK实现文件下载的方案不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造具有本发明方案的系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的SDK实现文件下载的方案中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (10)
1.一种软件开发工具包实现文件下载的方法,所述软件开发工具包应用于云存储系统,所述方法包括:
接收文件下载指令,所述文件下载指令中携带有待下载文件的信息;
根据所述文件下载指令和所述待下载文件的信息,从云存储端获取所述待下载文件,并且,获取下载所述待下载文件的统一上下文环境;
通过下载接口中设定的应用回调信息类中的成员变量,调用所述下载接口中封装的多个文件下载函数,使所述多个文件下载函数使用所述统一上下文环境进行所述待下载文件的下载。
2.根据权利要求1所述的方法,所述多个文件下载函数通过以下方式预先封装在所述下载接口中:
对所述云存储系统的文件下载流程进行分析,从所有文件下载函数中获取完成文件下载任务的基本函数;
将所述基本函数抽象为所述应用回调信息类,并根据所述基本函数定义所述应用回调信息类中的成员变量;
使用所述成员变量在所述基本函数间传递参数,并按照所述文件下载流程确定所述基本函数的调用顺序;
将所述应用回调信息类和确定了调用顺序的所述基本函数封装成所述下载接口。
3.根据权利要求2所述的方法,所述下载接口中还封装有下载历史记录函数;
在所述接收文件下载指令的步骤之后,还包括:
使用所述下载接口中的所述应用回调信息类中的成员变量,调用所述下载接口中封装的所述下载历史记录函数,通过所述下载历史记录函数判断发送所述文件下载指令的客户端是否已下载过所述待下载文件;
若已下载过,则判断所述客户端中已下载的所述待下载文件是否有效;
若有效,则结束所述待下载文件的下载;
若无效或者若未下载过所述待下载文件,则执行所述根据所述文件下载指令和所述待下载文件的信息,从云存储端获取所述待下载文件,并且,获取下载所述待下载文件的统一上下文环境的步骤。
4.根据权利要求2所述的方法,所述下载接口中还封装有下载线程参数;
在所述接收文件下载指令,所述文件下载指令中携带有待下载文件的信息步骤之后,根据所述文件下载指令和所述待下载文件的信息,从云存储端获取所述待下载文件,并且,获取下载所述待下载文件的统一上下文环境的步骤之前,还包括:
接收下载线程参数设置指令,根据所述下载线程参数设置指令设置的下载线程参数,启动所述下载线程参数指示数量的下载线程进行所述待下载文件的下载。
5.根据权利要求2所述的方法,所述通过下载接口中设定的应用回调信息类中的成员变量,调用所述下载接口中封装的多个文件下载函数的步骤包括:
所述下载接口通过使用设定的应用回调信息类中的成员变量以及句柄参数,调用所述下载接口中封装的多个文件下载函数;
其中,所述句柄参数用于在所述多个文件下载函数之间传达消息。
6.一种软件开发工具包实现文件下载的装置,所述软件开发工具包应用于云存储系统,所述装置包括:
接收模块,用于接收文件下载指令,所述文件下载指令中携带有待下载文件的信息;
获取模块,用于根据所述文件下载指令和所述待下载文件的信息,从云存储端获取所述待下载文件,并且,获取下载所述待下载文件的统一上下文环境;
下载模块,用于通过下载接口中设定的应用回调信息类中的成员变量,调用所述下载接口中封装的多个文件下载函数,使所述多个文件下载函数使用所述统一上下文环境进行所述待下载文件的下载。
7.根据权利要求6所述的装置,所述装置还包括:
封装模块,用于将所述多个文件下载函数通过以下方式预先封装在所述上下载接口中:
对所述云存储系统的文件下载流程进行分析,从所有文件下载函数中获取完成文件下载任务的基本函数;
将所述基本函数抽象为所述应用回调信息类,并根据所述基本函数定义所述应用回调信息类中的成员变量;
使用所述成员变量在所述基本函数间传递参数,并按照所述文件下载流程确定所述基本函数的调用顺序;
将所述应用回调信息类和确定了调用顺序的所述基本函数封装成所述下载接口。
8.根据权利要求7所述的装置,所述下载接口中还封装有下载历史记录函数;
所述装置还包括:
有效判定模块,用于在所述接收模块接收文件下载指令之后,使用所述下载接口中的所述应用回调信息类中的成员变量,调用所述下载接口中封装的所述下载历史记录函数,通过所述下载历史记录函数判断发送所述文件下载指令的客户端是否已下载过所述待下载文件;
若已下载过,则判断所述客户端中已下载的所述待下载文件是否有效;
若有效,则结束所述待下载文件的下载;
若无效或者若未下载过所述待下载文件,则进入所述获取模块。
9.根据权利要求7所述的装置,所述下载接口中还封装有下载线程参数;
所述装置还包括:
线程设置模块,用于在所述获取模块在所述接收文件下载指令,所述文件下载指令中携带有所述待下载文件的信息之后,根据所述文件下载指令和所述待下载文件的信息,从云存储端获取所述待下载文件,并且,获取下载所述待下载文件的统一上下文环境之前,接收下载线程参数设置指令,根据所述下载线程参数设置指令设置的下载线程参数,启动所述下载线程参数指示数量的下载线程进行所述待下载文件的下载。
10.根据权利要求7所述的装置,所述下载模块在通过下载接口中设定的应用回调信息类中的成员变量,调用所述下载接口中封装的多个文件下载函数时:
由所述下载接口通过使用设定的应用回调信息类中的成员变量以及句柄参数,调用所述下载接口中封装的多个文件下载函数;
其中,所述句柄参数用于在所述多个文件下载函数之间传达消息。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310522737.5A CN103595770B (zh) | 2013-10-29 | 2013-10-29 | Sdk实现文件下载的方法与装置 |
PCT/CN2014/089765 WO2015062494A1 (zh) | 2013-10-29 | 2014-10-29 | Sdk实现文件上传、下载的方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310522737.5A CN103595770B (zh) | 2013-10-29 | 2013-10-29 | Sdk实现文件下载的方法与装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103595770A CN103595770A (zh) | 2014-02-19 |
CN103595770B true CN103595770B (zh) | 2017-01-18 |
Family
ID=50085750
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310522737.5A Active CN103595770B (zh) | 2013-10-29 | 2013-10-29 | Sdk实现文件下载的方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103595770B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015062494A1 (zh) * | 2013-10-29 | 2015-05-07 | 北京奇虎科技有限公司 | Sdk实现文件上传、下载的方法与装置 |
CN105677423A (zh) * | 2016-01-11 | 2016-06-15 | 曾戟 | 一种资源下载方法和装置 |
CN107103211B (zh) * | 2016-02-19 | 2019-03-08 | 腾讯科技(深圳)有限公司 | Sdk发送、应用发布、应用运行方法及装置 |
CN106295310A (zh) * | 2016-07-28 | 2017-01-04 | 乐视控股(北京)有限公司 | 第三方程序sdk验证处理方法及装置 |
CN109144597B (zh) * | 2017-06-19 | 2021-09-07 | 武汉斗鱼网络科技有限公司 | 一种获得下载接口回调信息的方法和装置 |
CN109962911A (zh) * | 2019-02-19 | 2019-07-02 | 深圳点猫科技有限公司 | 一种通过小程序获取用户信息的方法及电子设备 |
CN110597764B (zh) * | 2019-10-10 | 2024-05-07 | 深圳前海微众银行股份有限公司 | 一种文件下载、版本管理方法及装置 |
CN111447395B (zh) * | 2020-03-05 | 2023-11-28 | 视联动力信息技术股份有限公司 | 一种数据通信方法、装置、终端设备和存储介质 |
CN112631621A (zh) * | 2020-12-29 | 2021-04-09 | 微医云(杭州)控股有限公司 | 一种依赖包管理方法、装置、服务器及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011078866A1 (en) * | 2009-12-23 | 2011-06-30 | Intel Corporation | Methods and apparatus for automatically obtaining and synchronizing contextual content and applications |
WO2011086180A1 (en) * | 2010-01-18 | 2011-07-21 | Thomson Licensing | Method, system and device for execution of a software application |
CN102752204A (zh) * | 2012-07-03 | 2012-10-24 | 中兴通讯股份有限公司 | 泛在网的业务平台及业务实现方法 |
CN103092626A (zh) * | 2013-02-04 | 2013-05-08 | 福州大学 | 基于Flex和web3D技术的富互联网应用方法 |
-
2013
- 2013-10-29 CN CN201310522737.5A patent/CN103595770B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011078866A1 (en) * | 2009-12-23 | 2011-06-30 | Intel Corporation | Methods and apparatus for automatically obtaining and synchronizing contextual content and applications |
WO2011086180A1 (en) * | 2010-01-18 | 2011-07-21 | Thomson Licensing | Method, system and device for execution of a software application |
CN102752204A (zh) * | 2012-07-03 | 2012-10-24 | 中兴通讯股份有限公司 | 泛在网的业务平台及业务实现方法 |
CN103092626A (zh) * | 2013-02-04 | 2013-05-08 | 福州大学 | 基于Flex和web3D技术的富互联网应用方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103595770A (zh) | 2014-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103595770B (zh) | Sdk实现文件下载的方法与装置 | |
CN103595769B (zh) | Sdk实现文件上传的方法与装置 | |
CN110442524B (zh) | 一种针对带有认证授权的web服务接口测试方法和装置 | |
CA2912852C (en) | Method and apparatus for code virtualization and remote process call generation | |
EP3011442B1 (en) | Method and apparatus for customized software development kit (sdk) generation | |
CN104821954B (zh) | 一种跨平台远程过程调用方法 | |
EP2902901A1 (en) | Development, compiling and debugging method and device for application | |
CN106776280B (zh) | 可配置性能测试装置 | |
CN108256118B (zh) | 数据处理方法、装置、系统、计算设备以及存储介质 | |
CN112416353A (zh) | 渠道包打包方法、装置及计算机设备 | |
CN108228444B (zh) | 一种测试方法和装置 | |
CN103646081B (zh) | 一种在网页中进行登录的方法和装置 | |
CN105556505A (zh) | 遗产系统 | |
CN108829519A (zh) | 基于云平台的任务调度方法、云平台及计算机可读存储介质 | |
CN107704499A (zh) | 一种应用程序的页面跳转控制方法及装置 | |
WO2015062494A1 (zh) | Sdk实现文件上传、下载的方法与装置 | |
CN109491755A (zh) | 操作系统中应用程序的保护方法和装置 | |
CN110413503A (zh) | 一种应用程序性能监控方法、装置、设备及存储介质 | |
CN103034545B (zh) | 基于ace的通信框架和方法、及功能模块间的通信方法 | |
CN111913721B (zh) | 自动化部署方法、装置、设备及存储介质 | |
CN112732265B (zh) | 一种数据处理方法和相关装置 | |
CN109120473B (zh) | 接口请求框架实现方法、接口测试方法及其对应的装置 | |
CN116346660A (zh) | 基于依赖替换服务的数据处理方法、装置、设备及介质 | |
CN103019844A (zh) | 一种支持多线程调用mpi函数的方法和装置 | |
CN111294250B (zh) | 压力测试方法、装置和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220728 Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015 Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park) Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Patentee before: Qizhi software (Beijing) Co.,Ltd. |