CN112631692B - 一种应用程序运行控制方法、装置和存储介质 - Google Patents
一种应用程序运行控制方法、装置和存储介质 Download PDFInfo
- Publication number
- CN112631692B CN112631692B CN201910903805.XA CN201910903805A CN112631692B CN 112631692 B CN112631692 B CN 112631692B CN 201910903805 A CN201910903805 A CN 201910903805A CN 112631692 B CN112631692 B CN 112631692B
- Authority
- CN
- China
- Prior art keywords
- function
- application
- module
- target function
- software development
- 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
Classifications
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例公开了一种应用程序运行控制方法、装置和存储介质,本实施例通过接收对应用程序的功能请求,该功能请求用于指示应用程序实现的目标功能;对目标功能进行解析,确定实现目标功能的多个功能代码;从多个功能代码中识别出应用程序的软件开发工具包模块未集成的目标功能代码;当应用程序的应用模块集成有目标功能代码时,通过软件开发工具包模块调用应用模块集成的目标功能代码,以实现目标功能。由此,本发明可以仅在应用程序的应用模块和软件开发工具包模块其中之一集成实现某功能的功能代码,无需重复实现,不仅降低了开发工作量,更有效缩减了应用程序的整体体积。
Description
技术领域
本发明涉及应用程序技术领域,具体涉及一种应用程序运行控制方法、装置和存储介质。
背景技术
软件开发工具包通常包括接口文件/库文件、帮助文档、开发示例和实用工具,其中,接口文件和库文件就是应用程序编程接口,其将底层的代码进行封装保护,提供一个调用底层代码的接口;帮助文档解释接口文件和库文件功能,以及介绍相关的实用工具,开发示例等等;开发示例就是一个应用程序示例的展示;实用工具是用来协助用户进行二次开发的工具,比如二次开发向导、API搜索工具、软件打包工具等。
现有技术中,应用程序开发人员可以便捷的在软件开发工具包的基础上进行应用程序的开发,比如,在开发视频播放类应用程序时,开发人员可以在预先定义了视频播放功能的软件开发工具包的基础上进行开发。这样,当开发的视频类播放应用程序需要实现视频播放功能时,即可由底层的软件开发工具包实现。
在对现有技术的研究和实践过程中,本发明的发明人发现,一些功能往往被软件功能开发工具包和二次开发部分重复实现,不仅增加了开发工作量,还导致应用程序的体积较大。
发明内容
本发明实施例提供一种应用程序运行控制方法、装置和存储介质,可以有效缩减应用程序的体积。
本发明实施例提供一种应用程序运行控制方法,包括:
接收对所述应用程序的功能请求,所述功能请求用于指示所述应用程序实现的目标功能;
对所述目标功能进行解析,确定实现所述目标功能的多个功能代码;
从所述多个功能代码中识别出所述应用程序的软件开发工具包模块未集成的目标功能代码;
当所述应用程序的应用模块集成有所述目标功能代码时,通过所述软件开发工具包模块调用所述应用模块集成的所述目标功能代码,以实现所述目标功能。
本发明实施例还提供一种应用程序运行控制装置,包括:
请求接收单元,用于接收对所述应用程序的功能请求,所述功能请求用于指示所述应用程序实现的目标功能;
功能解析单元,用于对所述目标功能进行解析,确定实现所述目标功能的多个功能代码;
代码识别单元,用于从所述多个功能代码中识别出所述应用程序的软件开发工具包模块未集成的目标功能代码;
功能实现单元,用于当所述应用程序的应用模块集成有所述目标功能代码时,通过所述软件开发工具包模块调用所述应用模块集成的所述目标功能代码,以实现所述目标功能。
在一实施例中,所述应用程序运行控制装置包括初始化单元,在所述请求接收单元接收对应用程序的功能请求之前,用于:
当所述应用程序启动时,初始化所述软件开发工具包模块。
在一实施例中,当所述应用程序启动时,初始化所述软件开发工具包模块,在通过所述软件开发工具包模块调用所述应用模块集成的所述目标功能代码时,所述功能实现单元用于:
按照所述接口定义,通过所述软件开发工具包模块调用所述功能实现体。
在一实施例中,所述目标功能代码被封装为功能函数,在通过所述软件开发工具包模块调用所述应用模块集成的所述目标功能代码时,所述功能实现单元还用于:
通过所述软件开发工具包模块中预先定义的对应所述功能函数的函数指针,调用所述功能函数。
在一实施例中,在通过所述软件开发工具包模块调用所述应用模块集成的所述目标功能代码时,所述功能实现单元404还用于:
通过所述软件开发工具包模块发送对应所述目标功能代码的预设消息至所述应用模块,使得所述应用模块响应于所述预设消息而执行所述目标功能代码。
在一实施例中,从所述多个功能代码中识别出所述应用程序的软件开发工具包模块未集成的目标功能代码之后,所述功能实现单元还用于:
当所述应用模块未集成有所述目标功能代码时,确定出集成有所述目标功能代码的其它应用程序;
通过所述软件开发工具包模块调用所述其它应用程序集成的所述目标功能代码,以实现所述目标功能。
在一实施例中,在通过所述软件开发工具包模块调用所述其它应用程序集成的所述目标功能代码时,所述功能实现单元用于:
当确定出的所述其它应用程序为多个时,从多个其它应用程序中确定出已在后台启动的目标其它应用程序;
通过所述软件开发工具包模块调用所述目标其它应用程序集成的所述目标功能代码。
在一实施例中,在通过所述软件开发工具包模块调用所述其它应用程序集成的所述目标功能代码之前,所述功能实现单元还用于:
识别对所述其它应用程序中目标功能代码的调用是否存在调用冲突;
当不存在调用冲突时,通过所述软件开发工具包模块调用所述其它应用程序集成的所述目标功能代码。
此外,本发明实施例还提供一种存储介质,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本发明实施例所提供的任一应用程序运行控制方法中的步骤。
本发明实施例通过接收对应用程序的功能请求,该功能请求用于指示应用程序实现的目标功能;对目标功能进行解析,确定实现目标功能的多个功能代码;从多个功能代码中识别出应用程序的软件开发工具包模块未集成的目标功能代码;当应用程序的应用模块集成有目标功能代码时,通过软件开发工具包模块调用应用模块集成的目标功能代码,以实现目标功能。由此,本发明可以仅在应用程序的应用模块和软件开发工具包模块其中之一集成实现某功能的功能代码,无需重复实现,不仅降低了开发工作量,更有效缩减了应用程序的整体体积。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的应用程序运行控制方法的应用场景示意图;
图2a是本发明实施例提供的应用程序运行控制方法的一流程示意图;
图2b是本发明实施例提供的应用程序的架构示意图;
图2c是本发明实施例中通过软件开发工具包模块实现目标功能的一示意图;
图2d是本发明实施例中实现软件开发工具包模块对应用模块中功能代码调用的一示意图;
图2e是本发明实施例中实现软件开发工具包模块对应用模块中功能代码调用的另一示意图;
图2f是本发明实施例中实现软件开发工具包模块对应用模块中功能代码调用的又一示意图;
图2g是本发明实施例中通过软件开发工具包模块实现目标功能的另一示意图;
图3是本发明实施例提供的应用程序运行控制方法的另一流程示意图;
图4是本发明实施例提供的应用程序运行控制装置的结构示意图;
图5是本发明实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种应用程序运行控制方法、装置和存储介质。
其中,该应用程序运行控制装置具体可以集成在电子设备(比如智能手机、平板电脑等)中,例如,请参照图1,电子设备运行有应用程序,可以接收用户对应用程序的功能请求,功能请求用于指示应用程序实现的目标功能,比如,视频播放功能、音频播放功能等;然后,对目标功能进行解析,确定实现目标功能的多个功能代码,比如,对于在线视频播放功能,实现该在线视频播放功能的多个功能代码至少包括实现下载视频功能的功能代码和实现视频解码播放的功能代码;然后,从多个功能代码中识别出应用程序的软件开发工具包模块未集成的目标功能代码,比如,对于同一功能代码,无需由应用模块和软件开发工具包模块重复实现;当应用模块集成有目标功能代码时,通过软件开发工具包模块调用应用模块集成的目标功能代码,并结合集成有的功能代码,来共同实现目标功能。
以下分别进行详细说明。需说明的是,以下实施例的顺序不作为对实施例优选顺序的限定。
实施例一、
在本实施例中,将从应用程序运行控制装置的角度进行描述,该应用程序运行控制装置具体可以集成在电子设备中。
本发明实施例提供一种应用程序运行控制方法,包括:接收对应用程序的功能请求,该功能请求用于指示应用程序实现的目标功能;对目标功能进行解析,确定实现目标功能的多个功能代码;从多个功能代码中识别出应用程序的软件开发工具包模块未集成的目标功能代码;当应用程序的应用模块集成有目标功能代码时,通过软件开发工具包模块调用应用模块集成的目标功能代码,以实现目标功能。
如图2a所示,该应用程序运行控制方法的具体流程可以如下:
201,接收对应用程序的功能请求,该功能请求用于指示应用程序实现的目标功能。
应当说明的是,在开发应用程序时,通常由开发人员在软件开发工具包的基础上进行二次开发,因此,请参照图2b,本发明实施例中将应用程序底层的软件开发工具包部分记为软件开发工具包模块,将上层的开发人员二次开发的部分记为应用模块。
本发明实施例中,首先通过应用模块接收对应用程序的功能请求,该功能请求用于指示应用程序需要实现的功能,记为目标功能。比如,当应用程序为视频播放类应用程序时,对该视频播放类应用程序的功能请求可以用于指示其实现在线视频播放功能,通俗的说,即指示该视频播放类应用程序播放某个在线视频;又比如,当应用程序为音频播放类应用程序时,对该音频播放类应用程序的功能请求可以用于指示其实现在线音频播放功能,通俗的说,即指示该音频播放类应用程序播放某个在线音频。
在一实施例中,“接收对应用程序的功能请求”之前,还包括:
当应用程序启动时,初始化应用程序的软件开发工具包模块。
本发明实施例中,当应用程序启动时,可以通过调用应用程序的软件开发工具包模块,使得软件开发工具包模块初始化,即使得软件开发工具模块的参数初始化。
202,对目标功能进行解析,确定实现目标功能的多个功能代码。
应当说明的是,对于一个大的功能而言,其可以细分为多个子功能,比如,在线视频播放功能至少可以划分为下载功能和视频解码播放功能等子功能,从而通过下载功能实现对应视频的下载,通过视频解码播放功能实现对应视频的解码播放。其中,这些子功能在具体实现时通过相应的代码实现,本发明实施例中将其记为功能代码。本领域普通技术人员应当理解的是,功能代码并不用于特指某一段代码,而是代指实现某一(子)功能的代码,而对于同一(子)功能,可以通过不同的代码来实现。应当说明的是,子功能为一个相对概率,子功能也可以为一个独立的功能,比如下载功能。
相应的,在接收到对应用程序的功能请求之后,进一步对该功能请求指示的目标功能进行解析,将目标功能划分为多个子功能,进而将对应这多个子功能的代码确定为实现目标功能的功能代码。
203,从多个功能代码中识别出应用程序的软件开发工具包模块未集成的目标功能代码。
通常的,当应用程序需要实现某功能时,通过底层的软件开发工具包模块实现,比如,当某视频播放类应用程序需要实现在线视频播放功能时,通过其底层的视频播放类软件开发工具包模块实现。
然而,由于某些原因,导致一些功能被应用程序中的应用模块和软件开发工具包模块重复实现,当应用模块集成有实现某功能的功能代码时,软件开发工具包模块也集成了实现同一功能的功能代码,导致应用程序的体积较大,不仅占用了更多的存储空间,也不利于应用程序的推广传播,比如,在某应用商店中,体积超过150Mb的应用程序只能在Wi-Fi环境下自动更新,不利于其在移动网络环境下普及。
基于此,本发明实施例中仅在应用模块和软件开发工具包模块中一侧保留实现某功能的功能代码。可选的,本发明实施例当在应用模块中集成有实现某一功能的功能代码时,则不重复在软件开发工具包模块中集成实现同一功能的功能代码。
相应的,在完成对目标功能的解析,并确定出实现该目标功能的多个功能代码之后,进一步从多个功能代码中识别出软件开发工具包模块未集成的功能代码,记为目标功能代码。
204,当应用程序的应用模块集成有目标功能代码时,通过软件开发工具包模块调用应用模块集成的目标功能代码,以实现目标功能。
在识别出软件开发工具包模块未集成的目标功能代码之后,进一步识别应用模块是否集成有该目标功能代码。比如,当识别出的目标功能代码为实现HTTP下载功能的代码时,则识别应用模块是否集成有实现HTTP(Hyper Text Transfer Protocol,超文本传输协议)下载功能的代码。
本发明实施例中,当识别到应用模块集成有目标功能代码时,即可通过软件开发工具包模块调用应用模块集成的目标功能代码,并结合软件开发工具包模块已集成的实现目标功能的其它功能代码,来共同实现目标功能。
比如,请参照图2c,假设对功能请求指示的目标功能进行解析,共将目标功能划分3个子功能,分别为子功能1、子功能2和子功能3,进而确定实现子功能1的功能代码1,实现子功能2的功能代码2,以及实现子功能3的功能代码3。其中,通过识别发现,软件开发工具包模块仅集成有功能代码1和功能代码2,则可以确定功能代码3为目标功能代码,并且应用模块集成有该功能代码3,由此,在实现目标功能时,即可通过软件开发工具包模块已经集成的功能代码1和功能代码2,并调用应用模块集成的功能代码3(即目标功能代码)来共同实现目标功能。
在一实施例中,应用模块集成的目标功能代码按照对应软件开发工具包模块的接口定义封装为功能实现体,“通过软件开发工具包模块调用应用模块集成的目标功能代码”,包括:
按照前述接口定义,通过软件开发工具包模块调用应用模块中的前述功能实现体。
作为一种可选的实施方式,可以采用接口类回调的方式来实现软件开发工具包模块对应用模块集成的目标功能代码的调用。
本发明实施例中,假设应用模块侧已经实现了一些通用功能,比如HTTP下载功能、HTTPS(Hypertext Transfer Protocol Secure,超文本传输安全协议)下载功能、线程调度、m3u8格式解析功能、MP4格式解析功能以及日志上传功能等,则本发明实施例中不重复在软件开发工具包侧重复实现应用模块侧已实现的这些功能,而是在软件开发工具包模块一侧,预先将HTTP下载功能、HTTPS(Hypertext Transfer Protocol Secure,超文本传输安全协议)下载功能、线程调度、m3u8格式解析功能、MP4格式解析功能以及日志上传功能等通用功能定义为接口。
然后,请参照图2d在应用模块这一侧,按照软件开发工具包模块侧的接口定义,将应用模块已经实现的通用功能的功能代码封装为实现体,记为功能实现体,并将该功能实现体设置到软件开发工具包模块一侧。比如,将实现HTTP下载功能的功能代码按照软件开发工具包侧的接口定义封装为HTTP下载功能实现体。
相应的,在本发明实施例中,假设目标功能代码为实现HTTP下载功能的功能代码,则在通过软件开发工具包模块调用应用模块集成的目标功能代码时,按照软件开发工具包模块对HTTP下载功能的接口定义,调用应用模块中的HTTP下载功能实现体,获得HTTP下载能力。对于HTTP下载功能之外的其它功能,可以参照实施,此处不再赘述。
在一实施例中,目标功能代码被封装为功能函数,“通过软件开发工具包模块调用应用模块集成的目标功能代码”,包括:
通过软件开发工具包模块中预先定义的对应前述功能函数的函数指针,调用功能函数。
作为一种可选的实施方式,可以采用回调函数的方式来实现软件开发工具包模块对应用模块集成的目标功能代码的调用。
本发明实施例中,对于一些通用功能,比如HTTP下载功能、HTTPS(HypertextTransfer Protocol Secure,超文本传输安全协议)下载功能、线程调度、m3u8格式解析功能、MP4格式解析功能以及日志上传功能等,并不在软件开发工具包中集成,而是由应用模块集成。
请参照图2e,在软件开发工具包模块一侧,预先定义不同功能对应的函数指针。
在应用模块一侧,按照软件开发工具包模块对函数指针的定义,将应用模块中实现对应功能的功能代码封装为函数,记为功能函数,然后,将功能函数赋值给对应的函数指针。
这样,当软件开发工具包模块需要使用应用模块的某功能时,即可通过对应的函数指针调用其指向的功能函数来实现。
相应的,在本发明实施例中,应用模块中的目标功能代码被封装为功能函数,且该功能函数对应的函数指针被预先定义到软件开发工具包模块中,由此,在通过软件开发工具包模块调用应用模块集成的目标功能代码时,即可通过软件开发工具包模块中预先定义的对应前述功能函数的函数指针,实现对前述功能函数的调用。比如,假设目标功能代码为实现HTTP下载功能的功能代码,其被封装为HTTP下载功能函数,则在通过软件开发工具包模块调用应用模块集成的目标功能代码时,按照软件开发工具包模块中预先定义的对应HTTP下载功能函数的函数指针,调用HTTP下载功能函数。
在一实施例中,“通过软件开发工具包模块调用应用模块集成的目标功能代码”,包括:
通过软件开发工具包模块发送对应目标功能代码的预设消息至应用模块,使得应用模块响应于预设消息而执行目标功能代码。
作为一种可选的实施方式,可以采用消息通知的方式来实现软件开发工具包模块对应用模块集成的目标功能代码的调用。
本发明实施例中,对于一些通用功能,比如HTTP下载功能、HTTPS(HypertextTransfer Protocol Secure,超文本传输安全协议)下载功能、线程调度、m3u8格式解析功能、MP4格式解析功能以及日志上传功能等,并不在软件开发工具包中集成,而是由应用模块集成。
请参照图2f,在软件开发工具包模块一侧,预先定义消息处理回调函数以及对应不同功能的消息。
在应用模块一侧,实现对应的消息处理函数,并将功能代码与对应的消息关联,将消息处理函数传给软件开发工具包模块。
这样,当软件开发工具包模块需要使用应用模块的某功能时,即可通过向应用模块发送对应的消息来实现。
相应的,在本发明实施例中,在通过软件开发工具包模块调用应用模块集成的目标功能代码时,即可通过软件开发工具包模块发送对应目标功能代码的预设消息至应用模块,以使得应用模块响应于该预设消息而执行目标功能代码。比如,假设目标功能代码为实现HTTP下载功能的功能代码,在通过软件开发工具包模块调用应用模块集成的目标功能代码时,通过软件开发工具包模块发送对应HTTP下载功能代码的预设消息至应用模块,使得应用模块响应于该预设消息而执行HTTP下载功能代码。
在一实施例中,“从多个功能代码中识别出应用程序的软件开发工具包模块未集成的目标功能代码”之后,还包括:
(1)当应用模块未集成有目标功能代码时,确定出集成有目标功能代码的其它应用程序;
(2)通过软件开发工具包模块调用其它应用程序集成的目标功能代码,以实现目标功能。
为避免应用模块和软件开发工具包模块均未集成某功能代码而导致无法实现对应功能时,本发明实施例进一步提供一种调用其它应用程序中功能代码的实现方案。
其中,在识别出软件开发工具包模块未集成的目标功能代码之后,若应用模块也未集成该目标功能代码,则对电子设备上已安装的其它应用程序进行识别,确定出其中集成有目标功能代码的其它应用程序,然后,即可通过软件开发工具包模块调用其它应用程序集成的目标功能代码,并结合软件开发工具包模块已集成的其它功能代码,来共同实现目标功能。
比如,请参照图2g,假设对功能请求指示的目标功能进行解析,共将目标功能划分3个子功能,分别为子功能1、子功能2和子功能3,进而确定实现子功能1的功能代码1,实现子功能2的功能代码2,以及实现子功能3的功能代码3。其中,通过识别发现,软件开发工具包模块仅集成有功能代码1和功能代码2,则可以确定功能代码3为目标功能代码,并且应用模块也未集成有该功能代码3,但识别到一其它应用程序集成有该功能代码3,由此,在实现目标功能时,即可通过软件开发工具包模块已经集成的功能代码1和功能代码2,并通过软件开发工具包模块调用其它应用程序中集成的功能代码3(即目标功能代码)来共同实现目标功能。
在一实施例中,“通过软件开发工具包模块调用其它应用程序集成的目标功能代码”,包括:
(1)当确定出集成有目标功能代码的其它应用程序为多个时,从多个其它应用程序中确定出已在后台启动的目标其它应用程序;
(2)通过软件开发工具包模块调用目标其它应用程序集成的目标功能代码。
其中,为了能够更高效的实现对其它应用程序中目标功能代码的调用,在本发明实施例中,当确定出集成有目标功能代码的其它应用程序为多个时,进一步从这多个其它应用程序中确定出已在后台启动的应用程序,记为目标其它应用程序。由此,则可通过软件开发工具包模块直接对该目标其它应用程序的目标功能代码进行调用。
比如,假设确定出集成有目标功能代码的其它应用程序为其它应用程序1、其它应用程序2和其它应用程序3,且当前其它应用程序3已在后台启动,则将其它应用程序3作为目标其它应用程序,在实现目标功能时,即可通过软件开发工具包模块已经集成的功能代码,并调用该其它应用程序3集成的目标功能代码来共同实现目标功能。
在一实施例中,“通过软件开发工具包模块调用其它应用程序集成的目标功能代码”之前,还包括:
(1)识别对其它应用程序中目标功能代码的调用是否存在调用冲突;
(2)当不存在调用冲突时,通过软件开发工具包模块调用其它应用程序集成的目标功能代码。
为避免调用其它应用程序集成的功能代码影响其它应用程序的正常运行,以及无法调用其它应用程序集成的目标功能代码等情况,本发明实施例中,在确定出集成有目标功能代码的其它应用程序之后,并不直接通过软件开发工具包模块对该其它应用程序中的目标功能代码进行调用,而是先识别对其它应用程序中目标功能代码的调用是否存在调用冲突,在且仅在不存在调用冲突时,再通过软件开发工具包模块调用其它应用程序集成的目标功能代码。
其中,在识别对其它应用程序中目标功能代码的调用是否存在调用冲突时,可以识别该其它应用程序中的目标功能代码当前是否处于调用状态,若该其它应用程序中的目标功能代码当前处于调用状态,则判定对该其它应用程序中目标功能代码的调用存在调用冲突,若该其它应用程序中的目标功能代码当前未处于调用状态,则判定对该其它应用程序中目标功能代码的调用不存在调用冲突。
由上可知,本发明通过接收对应用程序的功能请求,该功能请求用于指示应用程序实现的目标功能;对目标功能进行解析,确定实现目标功能的多个功能代码;从多个功能代码中识别出应用程序的软件开发工具包模块未集成的目标功能代码;当应用程序的应用模块集成有目标功能代码时,通过软件开发工具包模块调用应用模块集成的目标功能代码,以实现目标功能。由此,本发明可以仅在应用程序的应用模块和软件开发工具包模块其中之一集成实现某功能的功能代码,无需重复实现,不仅降低了开发工作量,更有效缩减了应用程序的整体体积。比如,以HTTP下载功能为例,如果在软件开发工具包模块集成对应的HTTP下载功能代码,将使得应用程序的体积增加300Kb左右,通过本发明提供的这种应用程序运行控制方法进行优化,能够缩减掉这300Kb的增量。以此类推,假设每个功能代码都是300Kb,一个应用程序包括了4个软件开发工具包模块,每一个软件开发工具包模块有3个通用的功能由应用模块集成的功能代码实现,则该应用程序的体积能够缩减300*3*4(Kb)=3.6Mb。
实施例二、
根据前面实施例所描述的方法,以下将举例作进一步详细说明。
如图3所示,应用程序包括应用模块和软件开发工具包模块,该应用程序运行控制方法的具体流程可以如下:
301,应用模块接收功能请求,功能请求用于指示需要实现的目标功能。
应当说明的是,在开发应用程序时,通常由开发人员在软件开发工具包的基础上进行二次开发,因此,请参照图2b,本发明实施例将应用程序底层的软件开发工具包部分记为软件开发工具包模块,将上层的开发人员二次开发的部分记为应用模块。
本发明实施例中,应用模块功能请求,该功能请求用于指示需要实现的功能,记为目标功能。比如,当应用程序为视频播放类应用程序时,对该视频播放类应用程序的应用模块的功能请求可以用于指示其实现在线视频播放功能,通俗的说,即指示播放某个在线视频;又比如,当应用程序为音频播放类应用程序时,对该音频播放类应用程序的应用模块的功能请求可以用于指示其实现在线音频播放功能,通俗的说,即指示播放某个在线音频。
302,应用模块发送目标功能调用请求至软件开发工具包模块。
通常的,当应用模块需要实现某功能时,通过底层的软件开发工具包模块实现,比如,当某视频播放类应用程序的应用模块需要实现在线视频播放功能时,通过其底层的视频播放类软件开发工具包模块实现。
相应的,应用模块发送目标功能调用请求至软件开发工具包模块,指示其协助实现目标功能。
303,软件开发工具包模块对目标功能进行解析,确定实现目标功能的多个功能代码,并从多个功能代码中识别出当前未集成的目标功能代码,判断应用模块中是否集成有该目标功能代码,是则转入304,否则转入306。
对于一个大的功能而言,其可以细分为多个子功能,比如,在线视频播放功能至少可以划分为下载功能和视频解码播放功能等子功能,从而通过下载功能实现对应视频的下载,通过视频解码播放功能实现对应视频的解码播放。其中,这些子功能在具体实现时通过相应的代码实现,本发明实施例中将其记为功能代码。本领域普通技术人员应当理解的是,功能代码并不用于特指某一段代码,而是代指实现某一(子)功能的代码,而对于同一(子)功能,可以通过不同的代码来实现。应当说明的是,子功能为一个相对概率,子功能也可以为一个独立的功能,比如下载功能。
相应的,软件开发工具包模块在接收到应用模块的目标功能调用请求之后,进一步对该目标功能调用请求指示的目标功能进行解析,将目标功能划分为多个子功能,进而将对应这多个子功能的代码确定为实现目标功能的功能代码。
应当说明的是,本发明实施例中仅在应用模块和软件开发工具包模块中一侧保留实现某功能的功能代码。可选的,本发明实施例当在应用模块中集成有实现某一功能的功能代码时,则不重复在软件开发工具包模块中集成实现同一功能的功能代码。
相应的,在完成对目标功能的解析,并确定出实现该目标功能的多个功能代码之后,软件开发工具包模块进一步从多个功能代码中识别出软件开发工具包模块未集成的功能代码,记为目标功能代码。
在识别出软件开发工具包模块未集成的目标功能代码之后,软件开发工具包模块进一步识别应用模块是否集成有该目标功能代码,是则转入304,否则转入306。
304,软件开发工具包模块调用应用模块集成的目标功能代码。
其中,本发明实施例中对软件开发工具包对应用模块集成的目标功能代码的调用方式不做具体限制,比如,可以采用以上实施例中提供的接口类回调的方式、回调函数的方式或者消息通知的方式,或者本发明实施例中未提及的其它调用方式,具体可由本领域普通技术人员根据实际需要进行选取。
305,软件开发工具包模块接收应用模块返回的对目标功能代码的调用结果。
比如,当目标功能为在线视频播放功能,确定的目标功能代码为HTTP下载功能代码,则通过调用应用模块中集成的HTTP下载功能代码,将接收到应用模块返回的调用结果为其执行HTTP下载功能代码而下载的在线视频的视频数据。
306,软件开发工具包模块调用其它应用程序集成的目标功能代码。
为避免应用模块和软件开发工具包模块均未集成某功能代码而导致无法实现对应功能时,本发明实施例中,当应用模块未集成有目标功能代码时,则对电子设备上已安装的其它应用程序进行识别,确定出其中集成有目标功能代码的其它应用程序,然后,即可通过软件开发工具包模块调用其它应用程序集成的目标功能代码。
307,软件开发工具包模块接收其它应用程序返回的对目标功能代码的调用结果。
参照对应用模块的调用,其它应用程序在其中的目标功能代码被调用时,也将返回对应的调用结果。
308,软件开发工具包模块根据对目标功能代码的调用结果,生成目标功能的调用结果返回至应用模块,使得应用模块实现目标功能。
应当说明的是,除了调用应用模块或其它应用程序中的目标功能代码之外,软件开发工具包模块还执行已集成的功能代码,从而生成目标功能的调用结果,返回至应用模块,从而实现目标功能。
比如,继续以目标功能为在线视频播放功能为例,在视频播放功能被划分为两个子功能,分别为下载功能和视频解码播放功能,其中,软件开发工具包模块调用应用模块的下载功能代码实现下载功能,得到对应的视频数据,然后执行视频解码播放功能代码实现视频解码播放功能,得到可直接播放的解码后视频数据,然后,将该可直接播放的解码后视频数据返回至应用模块进行播放,从而实现在线视频播放功能。
实施例三、
为了更好地实施以上方法,本发明实施例还提供一种应用程序运行控制装置,该应用程序运行控制装置具体可以集成在服务器中。
例如,如图4所示,该应用程序运行控制装置可以包括请求接收单元401、功能解析单元402、代码识别单元403以及功能实现单元404,如下:
请求接收单元401,用于接收对应用程序的功能请求,该功能请求用于指示应用程序实现的目标功能;
功能解析单元402,用于对目标功能进行解析,确定实现目标功能的多个功能代码;
代码识别单元403,用于从多个功能代码中识别出应用程序的软件开发工具包模块未集成的目标功能代码;
功能实现单元404,用于当应用程序的应用模块集成有目标功能代码时,通过软件开发工具包模块调用应用模块集成的目标功能代码,以实现目标功能。
在一实施例中,应用程序运行控制装置包括初始化单元(图4中未示出),在请求接收单元401接收对应用程序的功能请求之前,用于:
当应用程序启动时,初始化应用程序的软件开发工具包模块。
在一实施例中,应用模块集成的目标功能代码按照对应软件开发工具包模块的接口定义封装为功能实现体,在通过软件开发工具包模块调用应用模块集成的目标功能代码时,功能实现单元404用于:
按照前述接口定义,通过软件开发工具包模块调用应用模块中的前述功能实现体。
在一实施例中,目标功能代码被封装为功能函数,在通过软件开发工具包模块调用应用模块集成的目标功能代码时,功能实现单元404还用于:
通过软件开发工具包模块中预先定义的对应前述功能函数的函数指针,调用功能函数。
在一实施例中,在通过软件开发工具包模块调用应用模块集成的目标功能代码时,功能实现单元404还用于:
通过软件开发工具包模块发送对应目标功能代码的预设消息至应用模块,使得应用模块响应于预设消息而执行目标功能代码。
在一实施例中,在从多个功能代码中识别出应用程序的软件开发工具包模块未集成的目标功能代码之后,功能实现单元404还用于:
当应用模块未集成有目标功能代码时,确定出集成有目标功能代码的其它应用程序;
通过软件开发工具包模块调用其它应用程序集成的目标功能代码,以实现目标功能。
在一实施例中,在通过软件开发工具包模块调用其它应用程序集成的目标功能代码时,功能实现单元404用于:
当确定出集成有目标功能代码的其它应用程序为多个时,从多个其它应用程序中确定出已在后台启动的目标其它应用程序;
通过软件开发工具包模块调用目标其它应用程序集成的目标功能代码。
在一实施例中,在通过软件开发工具包模块调用其它应用程序集成的目标功能代码之前,功能实现单元404还用于:
识别对其它应用程序中目标功能代码的调用是否存在调用冲突;
当不存在调用冲突时,通过软件开发工具包模块调用其它应用程序集成的目标功能代码。
由上可知,本实施例的应用程序运行控制装置的请求接收单元401可以接收对应用程序的功能请求,该功能请求用于指示应用程序实现的目标功能,然后,由功能解析单元402对目标功能进行解析,确定实现目标功能的多个功能代码,并由代码识别单元403从多个功能代码中识别出应用程序的软件开发工具包模块未集成的目标功能代码,当应用程序的应用模块集成有目标功能代码时,再由功能实现单元404通过软件开发工具包模块调用应用模块集成的目标功能代码,以实现目标功能。由此,本发明可以仅在应用程序的应用模块和软件开发工具包模块其中之一集成实现某功能的功能代码,无需重复实现,不仅降低了开发工作量,更有效缩减了应用程序的整体体积。
实施例四、
本发明实施例还提供一种电子设备,如图5所示,其示出了本发明实施例所涉及的电子设备的结构示意图,具体来讲:
该电子设备可以包括一个或者一个以上处理核心的处理器501、一个或一个以上计算机可读存储介质的存储器502、电源503和输入单元504等部件。本领域普通技术人员可以理解,图5中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器501是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器502内的软件程序和/或模块,以及调用存储在存储器502内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。可选的,处理器501可包括一个或多个处理核心;优选的,处理器501可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器501中。
存储器502可用于存储软件程序以及模块,处理器501通过运行存储在存储器502的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器502可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器502可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器502还可以包括存储器控制器,以提供处理器501对存储器502的访问。
电子设备还包括给各个部件供电的电源503,优选的,电源503可以通过电源管理系统与处理器501逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源503还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该电子设备还可包括输入单元504,该输入单元504可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,电子设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,电子设备中的处理器501会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器502中,并由处理器501来运行存储在存储器502中的应用程序,从而实现各种功能,如下:
接收对应用程序的功能请求,该功能请求用于指示应用程序实现的目标功能;对目标功能进行解析,确定实现目标功能的多个功能代码;从多个功能代码中识别出应用程序的软件开发工具包模块未集成的目标功能代码;当应用程序的应用模块集成有目标功能代码时,通过软件开发工具包模块调用应用模块集成的目标功能代码,以实现目标功能。
应当说明的是,本发明实施例提供的电子设备与上文实施例中的应用程序运行控制方法属于同一构思,在电子设备上可以运行应用程序运行控制方法实施例中提供的任一方法,其具体实现过程详见以上方法实施例,此处不再赘述。
实施例五、
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本发明实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例所提供的任一种应用程序运行控制方法中的步骤。例如,该指令可以执行如下步骤:
接收对应用程序的功能请求,该功能请求用于指示应用程序实现的目标功能;对目标功能进行解析,确定实现目标功能的多个功能代码;从多个功能代码中识别出应用程序的软件开发工具包模块未集成的目标功能代码;当应用程序的应用模块集成有目标功能代码时,通过软件开发工具包模块调用应用模块集成的目标功能代码,以实现目标功能。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本发明实施例所提供的任一种应用程序运行控制方法中的步骤,因此,可以实现本发明实施例所提供的任一种应用程序运行控制方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本发明实施例所提供的一种应用程序运行控制方法、装置和存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种应用程序运行控制方法,其特征在于,包括:
接收对所述应用程序的功能请求,所述功能请求用于指示所述应用程序实现的目标功能;
对所述目标功能进行解析,确定实现所述目标功能的多个功能代码;
从所述多个功能代码中识别出所述应用程序的软件开发工具包模块未集成的目标功能代码;
当所述应用程序的应用模块集成有所述目标功能代码时,通过所述软件开发工具包模块调用所述应用模块集成的所述目标功能代码,以实现所述目标功能。
2.根据权利要求1所述的应用程序运行控制方法,其特征在于,所述目标功能代码按照对应所述软件开发工具包模块的接口定义封装为功能实现体,所述通过所述软件开发工具包模块调用所述应用模块集成的所述目标功能代码的步骤,包括:
按照所述接口定义,通过所述软件开发工具包模块调用所述功能实现体。
3.根据权利要求1所述的应用程序运行控制方法,其特征在于,所述目标功能代码被封装为功能函数,所述通过所述软件开发工具包模块调用所述应用模块集成的所述目标功能代码的步骤,还包括:
通过所述软件开发工具包模块中预先定义的对应所述功能函数的函数指针,调用所述功能函数。
4.根据权利要求1所述的应用程序运行控制方法,其特征在于,所述通过所述软件开发工具包模块调用所述应用模块集成的所述目标功能代码的步骤,还包括:
通过所述软件开发工具包模块发送对应所述目标功能代码的预设消息至所述应用模块,使得所述应用模块响应于所述预设消息而执行所述目标功能代码。
5.根据权利要求1-4任一项所述的应用程序运行控制方法,其特征在于,所述从所述多个功能代码中识别出所述应用程序的软件开发工具包模块未集成的目标功能代码的步骤之后,还包括:
当所述应用模块未集成有所述目标功能代码时,确定出集成有所述目标功能代码的其它应用程序;
通过所述软件开发工具包模块调用所述其它应用程序集成的所述目标功能代码,以实现所述目标功能。
6.根据权利要求5所述的应用程序运行控制方法,其特征在于,所述通过所述软件开发工具包模块调用所述其它应用程序集成的所述目标功能代码的步骤,包括:
当确定出的所述其它应用程序为多个时,从多个其它应用程序中确定出已在后台启动的目标其它应用程序;
通过所述软件开发工具包模块调用所述目标其它应用程序集成的所述目标功能代码。
7.根据权利要求5所述的应用程序运行控制方法,其特征在于,所述通过所述软件开发工具包模块调用所述其它应用程序集成的所述目标功能代码的步骤之前,还包括:
识别对所述其它应用程序中目标功能代码的调用是否存在调用冲突;
当不存在调用冲突时,通过所述软件开发工具包模块调用所述其它应用程序集成的所述目标功能代码。
8.根据权利要求1-4任一项所述的应用程序运行控制方法,其特征在于,所述接收对所述应用程序的功能请求之前,还包括:
当所述应用程序启动时,初始化所述软件开发工具包模块。
9.一种应用程序运行控制装置,其特征在于,包括:
请求接收单元,用于接收对所述应用程序的功能请求,所述功能请求用于指示所述应用程序实现的目标功能;
功能解析单元,用于对所述目标功能进行解析,确定实现所述目标功能的多个功能代码;
代码识别单元,用于从所述多个功能代码中识别出所述应用程序的软件开发工具包模块未集成的目标功能代码;
功能实现单元,用于当所述应用程序的应用模块集成有所述目标功能代码时,通过所述软件开发工具包模块调用所述应用模块集成的所述目标功能代码,以实现所述目标功能。
10.一种存储介质,其特征在于,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至8任一项所述的应用程序运行控制方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910903805.XA CN112631692B (zh) | 2019-09-24 | 2019-09-24 | 一种应用程序运行控制方法、装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910903805.XA CN112631692B (zh) | 2019-09-24 | 2019-09-24 | 一种应用程序运行控制方法、装置和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112631692A CN112631692A (zh) | 2021-04-09 |
CN112631692B true CN112631692B (zh) | 2023-08-29 |
Family
ID=75282583
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910903805.XA Active CN112631692B (zh) | 2019-09-24 | 2019-09-24 | 一种应用程序运行控制方法、装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112631692B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104536963A (zh) * | 2014-11-13 | 2015-04-22 | 中国建设银行股份有限公司 | 一种存储过程的调度方法和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050039169A1 (en) * | 2003-08-14 | 2005-02-17 | Yu-Cheng Hsu | Integrated source code debugging apparatus method and system |
-
2019
- 2019-09-24 CN CN201910903805.XA patent/CN112631692B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104536963A (zh) * | 2014-11-13 | 2015-04-22 | 中国建设银行股份有限公司 | 一种存储过程的调度方法和系统 |
Non-Patent Citations (1)
Title |
---|
Vodafone AirTouch.N4-000361 "Changes to MAP for secure transport of MAP messages".3GPP tsg_cn\WG4_protocollars.2000,(tsgN4_02_Rotenburg),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN112631692A (zh) | 2021-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10467025B2 (en) | Managing delivery of code and dependent data using application containers | |
CN112257135B (zh) | 一种基于多线程的模型加载方法、装置、存储介质及终端 | |
CN108958729B (zh) | 一种数据处理方法、装置及存储介质 | |
CN110058850B (zh) | 一种应用的开发方法、装置以及存储介质 | |
EP3848798A1 (en) | Information processing method and apparatus, storage medium, and electronic device | |
CN109933381B (zh) | 一种内核的加载方法及装置 | |
EP4310667A1 (en) | Ai application deployment method, and related platform, cluster, medium and program product | |
CN111954072B (zh) | 一种多媒体播放方法、装置、多媒体播放器和介质 | |
US20110167405A1 (en) | Application building system, method and computer-readable medium | |
CN110457132B (zh) | 一种功能对象的创建方法、装置和终端设备 | |
CN114327087A (zh) | 输入事件处理方法、装置、电子设备和存储介质 | |
CN109302639B (zh) | 一种弹幕消息的分发方法、装置、终端和存储介质 | |
EP4220627A1 (en) | Control method and apparatus, and electronic device | |
CN113127775B (zh) | 一种页面加载方法、装置、设备和存储介质 | |
CN112631692B (zh) | 一种应用程序运行控制方法、装置和存储介质 | |
CN116450309A (zh) | 系统服务提供方法、装置、存储介质及电子设备 | |
CN113448585B (zh) | 一种线程池的编译方法、装置、电子设备和存储介质 | |
CN114936145A (zh) | 数据库测试方法、装置、存储介质及数据库压测装置 | |
CN113515299A (zh) | 软件开发工具包sdk热升级方法、装置、设备及存储介质 | |
CN115269170A (zh) | 内存申请方法及相关设备 | |
CN117724852B (zh) | 一种云电脑计算资源分配方法及装置 | |
CN112506592A (zh) | 页面加载时长的确定方法、装置、设备和存储介质 | |
CN115981614B (zh) | 项目工程的模块化处理方法、电子设备及计算机存储介质 | |
CN109918209B (zh) | 一种线程间通信的方法和设备 | |
CN109933334B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |