CN108132832A - 应用程序启动方法和装置 - Google Patents
应用程序启动方法和装置 Download PDFInfo
- Publication number
- CN108132832A CN108132832A CN201611102666.3A CN201611102666A CN108132832A CN 108132832 A CN108132832 A CN 108132832A CN 201611102666 A CN201611102666 A CN 201611102666A CN 108132832 A CN108132832 A CN 108132832A
- Authority
- CN
- China
- Prior art keywords
- module
- instruction information
- information
- instruction
- modules
- 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
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/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/485—Task life-cycle, e.g. stopping, restarting, resuming execution
Abstract
本发明公开了一种应用程序启动方法和装置。其中,该应用程序包括多个模块,该启动方法包括:检测是否接收到第一指示信息,其中,所述第一指示信息用于指示第一模块完成启动,该多个模块包括第一模块;在检测出接收到所述第一指示信息的情况下,基于预先得到的订阅信息确定订阅了所述第一指示信息的第二模块,该多个模块包括第二模块;启动所述第二模块,其中,所述第二模块被设置为在所述第一模块的完成启动的情况下启动。本发明解决了按照应用程序的模块的依赖关系手动确定模块的启动顺序易出错的技术问题。
Description
技术领域
本发明涉及信息处理领域,具体而言,涉及一种应用程序启动方法和装置。
背景技术
现有技术中的app一般包含多个模块,在app启动时,该多个模块需按照一定的顺序启动,才可以完成app的启动。可选地,该多个模块之间的顺序基于这些模块之间的依赖关系来确定,若在启动时未按照该依赖关系启动,则可能导致模块启动失败,而一旦模块加载(或启动)失败,则可能对整个app的逻辑造成严重影响。
现有技术中为了保证app的多个模块的启动顺序,首先要求程序员计算出各个模块的依赖顺序,然后手动按序调用各个模块的启动函数来加载模块。
例如,app中有A模块,B模块,C模块和D四个模块,如图1所示,该四个模块的依赖关系为:B模块和C模块依赖A模块,而D模块依赖B模块和C模块。该四个模块对应启动模块的函数为分别startA(),startB(),startC()和startD()。在该示例中,正确的加载顺序为ABCD或者ACBD,则在启动app时,程序员就要依次调用startA(),startB(),startC()和startD()或者startA(),startC(),startB()和startD()来启动所有的模块。
由上述分析可知,现有技术中需要工程师计算出模块之间的依赖关系,再手动调用启动函数,所有的工作都需要程序员完成,在模块较多时,程序员很难计算出正确的模块依赖关系,从而导致模块加载失败;另外,一旦需要增加或者删除模块,程序员需要重新计算依赖关系,并且修改程序代码,这种人工的修改方式很容易出错。
针对上述按照应用程序的模块的依赖关系手动确定模块的启动顺序易出错的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种应用程序启动方法和装置,以至少解决按照应用程序的模块的依赖关系手动确定模块的启动顺序易出错的技术问题。
根据本发明实施例的一个方面,提供了一种应用程序启动方法,该应用程序包括多个模块,该启动方法包括:检测是否接收到第一指示信息,其中,所述第一指示信息用于指示第一模块完成启动,多个模块包括第一模块;在检测出接收到所述第一指示信息的情况下,基于预先得到的订阅信息确定订阅了所述第一指示信息的第二模块,多个模块包括第二模块;启动所述第二模块,其中,所述第二模块被设置为在所述第一模块完成启动的情况下启动。
根据本发明实施例的一个方面,提供了一种应用程序启动装置,该应用程序包括多个模块,该启动装置包括:检测单元,用于检测是否接收到第一指示信息,其中,所述第一指示信息用于指示第一模块完成启动,多个模块包括第一模块;确定单元,用于在检测出接收到所述第一指示信息的情况下,基于预先得到的订阅信息确定订阅了所述第一指示信息的第二模块,多个模块包括第二模块;第一启动单元,用于启动所述第二模块,其中,所述第二模块被设置为在所述第一模块完成启动的情况下启动。
在本发明实施例中,通知中心在启动之后(该启动可以基于应用程序的启动指令而启动),检测是否接收到多个模块中第一模块的指示信息,若接收到指示信息,基于预先得到的订阅信息确定订阅了该第一指示信息的第二模块(多个模块包括该第二模块),并调用该第二模块的启动函数,以启动第二模块。在该实施例中,通知中心可以在获取到用于指示第一模块完成启动的指示信息之后,确定第二模块依赖的第一模块完成启动,则开始启动第二模块,而无需程序员手动启动第二模块。在该实施方案中,待启动模块依据其所依赖的模块完成启动的通知来启动第二模块,无需手动设置多个模块的启动顺序,在增加或删除模块时,也无需重新设置多个模块的启动顺序,减少了出错概率,解决了现有技术中按照应用程序的模块的依赖关系手动确定模块的启动顺序易出错的问题,实现了准确启动应用程序的模块效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是现有技术中的应用程序中多个模块的依赖关系的举例示意图;
图2是根据本发明实施例的应用程序启动方法的硬件环境的示意图;
图3是根据本发明实施例的一种可选的应用程序启动方法的流程图;
图4是根据本发明实施例的另一种可选的应用程序启动方法的流程图一;
图5是根据本发明实施例的另一种可选的应用程序启动方法的流程图二;
图6是根据本发明实施例的另一种可选的应用程序启动方法的流程图三;
图7是根据本发明实施例的一种可选的应用程序启动方法的原理示意图;
图8是根据本发明实施例的一种可选的应用程序启动装置的示意图;
图9是根据本发明实施例的另一种可选的应用程序启动装置的示意图;以及
图10是根据本发明实施例的一种终端的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本发明实施例进行描述的过程中出现的部分名词或者术语适用于如下解释:
app:应用程序,即,application,应用在终端(如移动终端)上的软件。
SDK:软件开发工具包。
根据本发明实施例,提供了一种应用程序启动的方法实施例。可选地,在本实施例中,上述应用程序启动方法可以应用于如图2所示的由服务器102和终端104所构成的硬件环境中。如图2所示,服务器102通过网络与终端104进行连接,上述网络包括但不限于:广域网、城域网或局域网,终端104并不限定于PC、手机、平板电脑等。本发明实施例的应用程序启动方法可以由服务器102来执行,也可以由终端104来执行,还可以是由服务器102和终端104共同执行。其中,终端104执行本发明实施例的应用程序启动方法也可以是由安装在其上的客户端来执行。
可选地,该终端或服务器上可以安装有应用程序,该应用程序包括多个模块,该多个模块之间具有依赖关系。基于该依赖关系,该应用程序的多个模块在启动时按序启动。
在一个可选的实施例中,该终端上设置有通知中心,该通知中心用于接收和分发通知,该通知中心可以设置在订阅模块中,在应用程序启动时,该订阅模块的启动优先级高于该应用程序的多个模块中的部分或全部模块,也即,该订阅模块的启动早于应用程序的多个模块中的全部或部分模块(例如,应用程序的多个模块中第一个启动的模块可以早于该通知中心)。进一步可选地,该订阅模块可以为终端的操作系统中的模块。
可选地,在应用程序中设置订阅程序和/或通知发送程序(该通知发送程序可以为单独的程序,也可以设置在每个模块的启动函数中),该订阅程序用于从通知中心订阅通知,通知发送程序用于向通知中心发送通知,该通知用于指示一个模块加载完成(即完成启动)。该订阅程序和通知发送程序可以在更新版本时,服务器将携带有该订阅程序和通知发送程序的更新信息下发给终端,终端将更新信息中的程序注入应用程序中对应的模块,以使得模块可以从通知中心订阅通知和向通知中心发送通知。
在一个可选的实施例中,应用程序中可以不设置第一个模块的订阅程序,该第一个模块为不依赖于其他模块的启动而启动的模块,也即,该第一个模块为应用程序中第一个启动模块,该第一个模块可以为一个或多个。
下面以终端为例,详述本申请的一个可选的实施例,用户通过终端的屏幕输入点击操作,终端的操作系统在接收到该点击操作之后,将该点击指令转换为用于启动应用程序M的启动指令,在接收到该启动指令之后,触发启动应用程序的第一个模块的启动事件,可选地,可以调用第一个模块的启动函数,利用该启动函数启动第一个模块,该第一个模块完成启动之后,生成第一个模块的第一个指示信息(即上述的通知),并将该第一个模块的指示信息发送至通知中心,通知中心接收到该指示信息之后,确定订阅了该指示信息的其他模块,调用该其他模块的启动函数,以启动该其他模块,该其他模块完成启动之后,生成该其他模块的指示信息,并将该指示信息发送至通知中心,通知中心调用与该指示信息的模块对应的启动函数,以此类推,完成应用程序中所有模块的启动。
图3根据本发明实施例的一种可选的应用程序启动方法的流程图,如图3所示,该实施例可以用于启动应用程序,该应用程序包括多个模块,该多个模块包括第一模块和第二模块,可选地,该实施例可以应用在通知中心中,该方法可以包括以下步骤:
步骤S302,检测是否接收到第一指示信息,其中,第一指示信息用于指示第一模块完成启动;
步骤S304,在检测出接收到第一指示信息的情况下,基于预先得到的订阅信息确定订阅了第一指示信息的第二模块;
步骤S306,启动第二模块,其中,第二模块被设置为在第一模块的完成启动的情况下启动。
通过上述实施例,通知中心在启动之后(该启动可以基于应用程序的启动指令而启动),检测是否接收到第一模块的指示信息,若接收到指示信息,基于预先得到的订阅信息确定订阅了该指示信息的第二模块,并调用该第二模块的启动函数,以启动第二模块。在该实施例中,通知中心可以在获取到用于指示第一模块完成启动的指示信息之后,确定第二模块依赖的第一模块完成启动,则开始启动第二模块,而无需程序员手动启动第二模块。在该实施方案中,待启动模块依据其所依赖的模块完成启动的通知来启动第二模块,无需手动设置多个模块的启动顺序,在增加或删除模块时,也无需重新设置多个模块的启动顺序,减少了出错概率,解决了现有技术中按照应用程序的模块的依赖关系手动确定模块的启动顺序易出错的问题,实现了准确启动应用程序的模块效果。
在该实施例中,通过订阅中心发送第二模块订阅的第一指示信息,以启动第二模块,在该示例中,程序员无需设置专门的启动主函数,在该启动主函数中按照各个模块之间的依赖关系确定了各个模块的启动顺序,如图1所示的示例中,可以将四个模块的启动顺序设置为A、B、C和D。
在上述实施例中,若接收到其依赖的第一模块的第一指示信息(如启动完成通知),则可以开始启动;若未接收到所有其依赖的第一指示信息,则不启动,采用该实施例,通过待启动模块所依赖模块的启动状况控制待启动模块的启动,无需计算多个模块的启动顺序,不论模块的数量的多少,每个模块基于其依赖的模块的启动情况而启动,均不会出现计算启动顺序错误的情况下;另外,在应用程序需减少模块的情况下,无需调整启动主函数中模块的启动顺序,可以取消该模块,无需调整通知中心的处理逻辑;而在需要增加模块的情况下,也无需调整通知中心的逻辑,通过调整依赖其启动的模块的订阅信息即可实现对模块启动顺序的调整,无需重新计算多个模块的启动顺序,减少了计算启动顺序的计算量,也无需重新修改启动主函数的代码,降低了出错率,增加了整个应用程序的启动的可维护性。
在步骤S302的技术方案中,在通知中心启动之后,实时检测是否接收到通知,若检测到接收到通知,可以检测该通知中是否携带有完成信息,该完成信息可以包括文字描述信息(如预定的字符串),还可以包括完成标识。若其中携带有完成信息,则可以确定接收到第一指示信息。
例如,可以预先设置预定的字符串为包括“完成”的字符串,预先设置完成标识为“1”。可选地,可以预先设置检测规则,若检测到预定的字符串,或者检测到预定的标识,可以确定检测到第一指示信息(即启动完成通知)。
例如,若检测到通知中携带有“完成”或者“finish”的字符串,则确定检测到第一指示信息;又如,若检测到通知中携带有预定标识1,则确定检测到第一指示信息。
可选地,在检测到第一指示信息之后,或者在检测接收到的通知是否为第一指示信息的过程中,可以确定该通知的发送方或者该通知指示的是哪个模块的信息。在本申请实施例中,第一模块的指示信息被记录为第一指示信息,第二模块的指示信息被记录为第二指示信息,这里的第一和第二仅用作区分不同的模块和不同模块的指示信息,对该模块和指示信息的顺序不做限定。
进一步可选地,在检测出第一指示信息之后,确定该指示信息中携带的模块标识,以确定该指示信息指示完成启动的模块,例如,若检测出的指示信息为“A_finish”,则该指示信息用于指示模块A完成启动。
在步骤S304的技术方案中,在检测出接收到第一指示信息的情况下,获取预先获取的订阅信息,利用该订阅信息确定订阅了第一模块的指示信息的第二模块。
通知中心可以预先获取订阅信息,该订阅信息中记录了订阅该通知的模块的信息,该模块的信息可以为模块的名称和/或标识,该订阅信息中记录有各个通知与模块的订阅对应关系,可选地,指示信息可以为规定格式的通知,以数据表的形式记录该指示信息与模块的对应关系。在确定检测到指示信息的情况下,从订阅信息中获取与该指示信息对应的一个或多个第二模块的信息,获取到第二模块的信息即确定出订阅了该指示信息的第二模块。
在步骤S306的技术方案中,调用第二模块的启动函数,以启动第二模块,其中,第二模块被设置为在第一模块的完成启动的情况下启动,也即,在接收到第一模块的指示信息的情况下启动第二模块。
可选地,通知中心在确定出第二模块之后,确定该第二模块的启动函数,并自动调用该第二模块的启动函数,在确定其依赖的第一模块完成启动的情况下,利用启动函数启动第二模块,这样可以保证在第二模块依赖的第一模块完成启动之后再启动,从而可以避免模块加载失败。
根据本申请的上述实施例,在检测是否接收到第一指示信息之前,方法还可以包括如图4所示的步骤:
步骤S402:接收启动指令,其中,启动指令用于启动应用程序,应用程序包括多个模块,多个模块包括第一模块和第二模块。
可选地,应用程序可以包括多个模块,该多个模块之间具有依赖关系,如,模块B依赖模块A启动,若模块A启动未完成,则模块B无法启动成功。
步骤S404:接收多个模块响应于启动指令发送的订阅请求,其中,订阅请求用于订阅与各个模块对应的前序模块的指示信息,各个模块被设置为在前序模块完成启动之后启动。
步骤S406:基于各个模块的订阅请求,生成订阅信息。
在一个可选的实施例中,在订阅通知的过程中,可以一并指定各个模块的启动函数,可选地,订阅信息中也可以记录各个模块指定的启动函数。
可选地,通过终端的输入装置接收启动指令,该输入装置可以为触摸屏幕或者鼠标等输入装置,若该输入装置为触摸屏幕,则可以通过触摸屏幕接收点击应用程序的触摸操作,将该触摸操作转换为启动指令,将该启动指令发送至终端的操作系统,终端的操作系统接收到该启动指令之后,开始执行启动操作。
若该输入装置为鼠标,则可以通过鼠标接收点击或双击应用程序的点击操作,将该点击操作转换为启动指令,将该启动指令发送至终端的操作系统,终端的操作系统在接收到该启动指令之后,开始执行启动操作。
可选地,应用程序中可以包括多个模块,各个模块之间具有依赖关系,该依赖关系可以为预先确定的关系,注入订阅程序,可选地,订阅请求中可以携带对应模块的标识、订阅的通知的内容以及指定的启动函数的信息。在一个可选的实施例中,可以根据该依赖关系在各个模块中注入订阅程序,该订阅程序用于向通知中心发送订阅请求,以订阅其所依赖的模块的指示信息。
订阅程序在接收到应用程序的启动指令的情况下启动,以将订阅请求发送至通知中心,通知中心接收到该订阅请求,响应该订阅请求,记录该请求,可选地,通知中心还可以向发送订阅请求的模块返回确定信息。
在另一个可选地的实施例中,通知中心接收到订阅请求之后,记录该请求中请求订阅的通知,生成订阅信息,在检测到第一指示信息之后,基于该订阅信息,确定订阅了该第一指示信息的第二模块,调用第二模块的启动函数,以启动第二模块。
在一个可选的实施例中,若第二模块依赖于第一模块的启动而启动,则第一模块为第二模块的前序模块,若第二模块依赖于多个第一模块的启动而启动,则该多个第一模块均为第二模块的前序模块。
根据本申请上述实施例,基于各个模块的订阅请求,生成订阅信息包括:基于订阅请求记录第一指示信息与订阅了第一指示信息的模块的对应关系,生成订阅信息。基于预先得到的订阅信息确定订阅了第一指示信息的第二模块包括:基于订阅信息中的对应关系,确定与第一指示信息对应的第二模块。
可选地,获取订阅请求中记录的请求订阅的指示信息的内容或标志信息,并获取发送订阅请求的模块信息,记录指示信息的内容或标志信息、与发送订阅请求的模块信息的对应关系,生成订阅信息。
通知中心在检测出接收到指示信息的情况下,基于该指示信息的内容和订阅信息中记录的对应关系,确定订阅了该指示信息的第二模块,并自动调用第二模块的启动函数,则开始启动第二模块。
在一个可选的实施例中,可以在第二模块中设置自动调用程序,若第二模块接收到第一指示信息,则该自动调用程序启动,该自动调用程序调用第二模块的启动函数,通过所述启动函数调用启动第二模块所需的资源,以启动第二模块。
在一个可选的实施例中,对应关系可以包括:一个模块对应一个或多个指示信息的对应关系。
可选地,订阅信息中记录的对应关系可以为一个模块对应一个指示信息的对应关系,也可以是一个模块对应多个指示信息的对应关系,也可以是多个模块对应一个指示信息的对应关系,还可以是多个模块对应多个指示信息的对应关系。
在订阅信息中记录的对应关系为一个模块对应一个指示信息的对应关系的情况下,也即,该模块依赖一个模块的启动而启动,若接收到该模块所依赖所有模块的指示信息,则开始启动;在订阅信息中记录的对应关系为一个模块对应多个指示信息的对应关系的情况下,也即,该模块依赖多个模块的启动而启动,若接收到该模块所依赖的多个模块的指示信息,才开始启动。
在一个可选的实施例中,在接收启动指令之后,启动多个模块中的第一个模块,多个模块中除第一个模块之外的其他模块被设置为在第一个模块启动之后启动,第二模块不为第一个模块。
可选地,应用程序的多个模块中的第一个模块可以在接收到启动指令之后,直接启动,因为该模块无需通过依赖其他模块的启动而启动,为了减少通知中心的处理数量,可以将其设置为在接收到启动指令之后启动,而无需向通知中心订阅指示信息。
另一种可选地,应用程序的多个模块中的第一个模块可以在接收到启动指令之后,直接启动,可以将其设置为向通知中心订阅启动通知,该启动通知用于指示接收到了用于启动应用程序的启动指令,若接收到该启动指令,则调用第一个模块的启动函数,以启动该第一个模块。
可选地,应用程序中的多个模块的启动均可以通过调用启动函数来实现。
在一个可选的实施例中,调用第二模块的启动函数,以启动第二模块可以包括:基于订阅信息调用预先指定的第二模块的启动函数,以启动第二模块。
可选地,在模块向通知中心订阅通知时,一并指定该模块的启动函数,通知中心可以记录每个指示信息与启动函数的对应关系,在检测到指示信息之后,可以直接调用与该指示信息对应的启动函数。
在一个可选的实施例中,通过订阅信息可以直接确定与该指示信息对应的启动函数。
可选地,若第二模块被设置为在多个第一模块的完成启动的情况下启动,则通过启动函数检测是否接收到多个第一指示信息,若检测出接收到多个第一指示信息的情况下,执行启动函数,以启动第二模块。
在该实施例中,在调用启动函数之后,启动函数检测该函数的启动条件是否全部满足,可选地,该启动条件可以为第二模块订阅的全部指示信息是否均接收到,若检测出接收到第二模块订阅的全部指示信息,则确定启动条件满足,则启动执行该启动函数;若检测出未接收到第二模块订阅的全部指示信息,则确定启动条件不满足,则继续检测,直至检测到第二模块订阅的全部指示信息均接收到。
可选地,启动函数中还设置有发送指令,发送指令用于在启动第二模块完成之后发送第二指示信息,其中,第二指示信息用于指示第二模块完成启动。
可选地,每个模块在完成启动之后,生成该模块的指示信息,并将该模块的指示信息发送至通知中心,通知中心获取到该模块的指示信息之后,可以确定订阅了该通知的模块,以自动启动该对应的模块。
在一个可选的实施例中,在接收到第一模块的指示信息之后,自动调用第二模块的启动函数,在执行启动函数完成之后,向通知中心发送指示信息,可选地,在该第二模块的启动函数的最后添加上发送指令,这样,在第二模块完成启动之后,可以自动向通知中心发送指示信息。
在一个可选的实施例中,通知中心在检测出指示信息之后,将该指示信息发送给订阅了该指示信息的第二模块,该第二模块在接收到该指示信息之后,调用启动函数,以启动第二模块。
下面结合图5对本申请一个可选的实施例进行详细描述,如图5所示,该实施例可以包括如下步骤:
步骤S501:确定应用程序多个模块之间的依赖关系。
步骤S502:确定多个模块中的第一个模块。
可选地,该第一个模块为应用程序中第一个启动的模块。
步骤S503:按照确定的依赖关系注入剩余的模块订阅程序。
其中,剩余的模块可以是指多个模块中除第一个模块之外的模块,该订阅程序在接收到启动指令之后即可启动,也即,在接收到启动应用程序的启动指令之后,自动向通知中心订阅通知。
该订阅程序中还设置有指定的启动函数的信息,该订阅程序还被设置为在订阅通知的过程中,指定对应模块的启动函数。
可选地,该订阅程序可以注入应用程序的主程序,也可以将订阅程序注入各个模块,在接收到启动指令的时候,该订阅程序启动,以订阅通知和/或指定启动函数。
步骤S504:在各个模块的启动函数中增加发送指令。
该发送指令用于指示在利用启动函数完成启动对应的模块的情况下,将用于表示该模块完成启动的通知发送至通知中心。
可选地,上述步骤可以为预先准备完成的工作,在实际启动应用程序的过程中,可以不执行上述的步骤S501至步骤S504。
可选地,步骤S503可以早于步骤S504执行,也可以晚于步骤S504执行,本申请对该两个步骤的具体执行顺序不做限定。
通过上述实施例,程序员只需计算出最先启动的模块,在接收到启动指令的情况下,调用这个模块的启动函数,其它模块的启动函数就会自动调用,不需要程序员的干预,与现有方案将各个模块的启动顺序写死的方式相比,有简单、不易出错的优点。
下面结合图6对本申请的一个可选的实施例进行详细描述,如图6所示,该实施例中可以包括如下步骤:
步骤S601:在接收到启动指令之后,每个模块订阅其依赖模块的启动完成通知。
可选地,每个模块在启动之前,订阅其依赖模块的启动完成通知,并且在收到通知时调用自己的启动函数,其中,该启动函数可以在订阅启动完成通知时指定,指定成功以后无需程序员干预即可在收到订阅的启动完成通知时调用自己的启动函数。
步骤S602:响应启动指令,启动第一个模块。
该第一个模块为不依赖其他模块启动的模块。可选地,可以计算出最先启动的模块,并在接收到启动指令的情况下,调用其启动函数。
步骤S603:通知中心记录订阅信息,并在接收到启动完成通知之后,确定订阅了该通知的模块。
步骤S604:调用订阅了该通知的模块的启动函数,以启动该模块。
步骤S605:每个模块完成启动之后,发送该模块完成启动的通知。
下面以图1示出的A,B,C和D四个模块为例,详细说明图7所示的实施例在iOS操作系统上用Objective-C语言的具体实现,可选地,本申请实施例可以适用于各种操作系统,这里的iOS操作系统仅作示例性说明,并不对本申请的保护范围造成限定。
在每个模块订阅通知并指定启动函数。
在iOS操作系统中,我们可以使用系统库NSNotificationCenter(即,系统库中的通知中心)来订阅通知并指定启动函数。
以模块B为例,可以添加以下订阅程序的代码:[[NSNotificationCenterdefaultCenter]addObserver:self]
selector:@selector(startB)name:@”_START_A_FINISH_”object:nil];
通过该代码可以向通知中心订阅模块A的指示信息,也即,通知中心在接收到模块A的指示信息后,调用模块B的启动函数,以在模块A加载完成后自动调用模块B的启动函数,也即,通知中心在接收到“_START_A_FINISH_”的启动完成通知时,可以自动调用startB函数(即模块B的启动函数),以启动模块B。
在该示例中,模块C也需要做类似处理,这里不再赘述。模块D因为同时依赖模块B和C,所以需要订阅两个通知,也即订阅模块B和模块C的指示信息,可选地,模块A因为不依赖任何模块,所以不需要订阅任何通知,在该示例中模块A为上述的应用程序的多个模块中的第一个模块。
在一个可选的实施例中,在接收到应用程序的启动指令时(如在应用程序启动时),自动订阅通知,即在app启动时自动调用上述的订阅代码。
可选地,可以使用Objective-C的+(void)load方法来自动订阅通知,这样,如果一个类实现了+(void)load方法,则app启动时就会自动调用这个方法,无需程序员手动调用,因此,可以将上述代码写在+(void)load的方法体中来完成自动订阅通知的功能。
另一种可选的,利用gcc会在main函数之前调用有constructor属性的函数,可以在这些函数里面订阅消息,指定启动函数。
又一种可选的,可以利用静态变量初始化自动订阅通知。具体地,静态变量会在main函数之前初始化,所以可以在静态函数的构造函数里面订阅消息,指定启动函数。
在模块完成启动后发送完成启动的通知。
可以使用iOS系统库NSNotificationCenter来发送通知,以模块A为例,可以在startA函数最后添加上发送指令,该发送指令如下:
[[NSNotificationCenter defaultCenter]
postNotificationName:@”_START_A_FINISH_”object:nil];
将该发送指令添加在启动函数中,在模块A加载完成以后,会自动发送“_START_A_FINISH_”的启动完成通知。
可选地,其它三个模块的启动函数中也需要添加类似代码,在此不再赘述。
如图7所示,在各个模块中自动订阅了模块A的指示信息,如,模块B和模块C已经自动订阅了_START_A_FINISH_这个启动完成通知,在通知中心接收到该模块A的启动完成通知时,模块B和模块C的启动函数startB和startC会自动调用;同理,模块B和模块C完成启动以后,会发送对应的启动完成通知。模块D已经订阅了B和C两个模块的启动完成通知,在模块B和模块C加载完成后,D模块的启动函数startD也会自动调用,完成D模块的加载。
需要说明的是,可以预先计算出最先需要加载的模块(如上述实施例中的第一个模块),手动调用其启动函数。
在该示例中,模块A是第一个需要加载的函数,其启动函数为startA()。在启动应用程序时,基于启动指令调用startA(),则A,B,C和D四个模块就可以按照其依赖顺序自动加载了,如图7所示,模块B、C、D分别订阅相关的通知,程序员手动调用startA加载A模块,A模块加载完成以后会发送加载完成的通知,在收到相应通知后,模块B、C和D会分别自动加载,最终所有的模块都完成加载。
通过上述实施例,只要求程序员手动调用第一个模块的启动函数,因此大大减少了代码的复杂程度;另外,在增加、删除模块时,只需要考虑增加、删除模块的依赖关系就可以了,而不需要考虑增加、删除模块对整个加载链的影响,因此代码的可维护性也大大增加。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。
根据本发明实施例,还提供了一种用于实施上述应用程序启动方法的应用程序启动装置,该应用程序包括多个模块。图8是根据本发明实施例的一种可选的应用程序启动装置的示意图,如图8所示,该多个模块可以包括第一模块和第二模块,该装置可以包括:
检测单元81,用于检测是否接收到第一指示信息,其中,第一指示信息用于指示第一模块完成启动;
确定单元83,用于在检测出接收到第一指示信息的情况下,基于预先得到的订阅信息确定订阅了第一指示信息的第二模块;
第一启动单元85,用于启动第二模块,其中,第二模块被设置为在第一模块的完成启动的情况下启动。
通过上述实施例,通知中心在启动之后(该启动可以基于应用程序的启动指令而启动),检测是否接收到第一模块的指示信息,若接收到指示信息,基于预先得到的订阅信息确定订阅了该指示信息的第二模块,并调用该第二模块的启动函数,以启动第二模块。在该实施例中,通知中心可以在获取到用于指示第一模块完成启动的指示信息之后,确定第二模块依赖的第一模块完成启动,则开始启动第二模块,而无需程序员手动启动第二模块。在该实施方案中,待启动模块依据其所依赖的模块完成启动的通知来启动第二模块,无需手动设置多个模块的启动顺序,在增加或删除模块时,也无需重新设置多个模块的启动顺序,减少了出错概率,解决了现有技术中按照应用程序的模块的依赖关系手动确定模块的启动顺序易出错的问题,实现了准确启动应用程序的模块效果。
可选地,装置还包括如图9所示的:第一接收单元91,用于在检测是否接收到第一指示信息之前,接收启动指令,其中,启动指令用于启动应用程序,应用程序包括多个模块,多个模块包括第一模块和第二模块;第二接收单元93,用于接收多个模块响应于启动指令发送的订阅请求,其中,订阅请求用于订阅与各个模块对应的前序模块的指示信息,各个模块被设置为在前序模块完成启动之后启动;生成单元95,用于基于各个模块的订阅请求,生成订阅信息。
作为一种可选的实施例,生成单元包括:生成模块,用于基于订阅请求记录第一指示信息与订阅了第一指示信息的模块之间的对应关系,生成订阅信息;确定单元包括:确定模块,用于基于订阅信息中的对应关系,确定与第一指示信息对应的第二模块。
可选地,对应关系包括:一个模块对应一个或多个指示信息的对应关系,第一启动单元包括:启动模块,用于在检测出接收到所述第二模块订阅的所述一个或多个指示信息之后,启动所述第二模块。
在一个可选的实施例中,装置还包括:第二启动单元,用于在接收启动指令之后,启动多个模块中的第一个模块,多个模块中除第一个模块之外的其他模块被设置为在第一个模块启动之后启动。
根据本发明的上述实施例,第一启动单元可以包括:调用模块,用于基于订阅信息调用预先指定的第二模块的启动函数,以启动第二模块。
可选地,装置还可以包括:执行单元,用于若第二模块被设置为在多个第一模块的完成启动的情况下启动,则通过启动函数检测是否接收到多个第一指示信息,若检测出接收到多个第一指示信息的情况下,执行启动函数,以启动第二模块。
在一个可选的实施例中,启动函数中还设置有发送指令,发送指令用于在启动第二模块完成之后发送第二指示信息,其中,第二指示信息用于指示第二模块完成启动。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。
根据本发明实施例,还提供了一种用于实施上述应用程序启动方法的服务器或终端。
图10是根据本发明实施例的一种终端的结构框图,如图10所示,该终端可以包括:一个或多个(图中仅示出一个)处理器201、存储器203、以及传输装置205(如上述实施例中的发送装置),如图10所示,该终端还可以包括输入输出设备207。
其中,存储器203可用于存储软件程序以及模块,如本发明实施例中的应用程序启动方法和装置对应的程序指令/模块,处理器201通过运行存储在存储器203内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序启动方法。存储器203可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器203可进一步包括相对于处理器201远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置205用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置205包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置205为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器203用于存储应用程序。
处理器201可以通过传输装置205调用存储器203存储的应用程序,以执行下述步骤:检测是否接收到第一指示信息,其中,第一指示信息用于指示第一模块完成启动;在检测出接收到第一指示信息的情况下,基于预先得到的订阅信息确定订阅了第一指示信息的第二模块;启动第二模块,其中,第二模块被设置为在第一模块的完成启动的情况下启动,其中,应用程序包括多个模块,多个模块包括第一模块和第二模块。
处理器201还用于执行下述步骤:在检测是否接收到第一指示信息之前,接收启动指令,其中,启动指令用于启动应用程序;接收多个模块响应于启动指令发送的订阅请求,其中,订阅请求用于订阅与各个模块对应的前序模块的指示信息,各个模块被设置为在前序模块完成启动之后启动;基于各个模块的订阅请求,生成订阅信息。
处理器201还用于执行下述步骤:基于订阅请求记录第一指示信息与订阅了第一指示信息的模块之间的对应关系,生成订阅信息,以基于各个模块的订阅请求,生成订阅信息;基于订阅信息中的对应关系,确定与第一指示信息对应的第二模块,以基于预先得到的订阅信息确定订阅了第一模块的指示信息的第二模块。
可选地,对应关系包括:一个模块对应一个或多个指示信息的对应关系,在检测出接收到所述第二模块订阅的所述一个或多个指示信息之后,启动所述第二模块。
处理器201还用于执行下述步骤:在接收启动指令之后,启动多个模块中的第一个模块,多个模块中除第一个模块之外的其他模块被设置为在第一个模块启动之后启动。
处理器201还用于执行下述步骤:基于订阅信息调用预先指定的第二模块的启动函数,以启动第二模块,以实现调用第二模块的启动函数,以启动第二模块。
处理器201还用于执行下述步骤:若第二模块被设置为在多个第一模块的完成启动的情况下启动,则通过启动函数检测是否接收到多个第一指示信息,若检测出接收到多个第一指示信息的情况下,执行启动函数,以启动第二模块。
可选地,启动函数中还设置有发送指令,发送指令用于在启动第二模块完成之后发送第二指示信息,其中,第二指示信息用于指示第二模块完成启动。
通过上述实施例,通知中心在启动之后(该启动可以基于应用程序的启动指令而启动),检测是否接收到第一模块的指示信息,若接收到指示信息,基于预先得到的订阅信息确定订阅了该指示信息的第二模块,并调用该第二模块的启动函数,以启动第二模块。在该实施例中,通知中心可以在获取到用于指示第一模块完成启动的指示信息之后,确定第二模块依赖的第一模块完成启动,则开始启动第二模块,而无需程序员手动启动第二模块。在该实施方案中,待启动模块依据其所依赖的模块完成启动的通知来启动第二模块,无需手动设置多个模块的启动顺序,在增加或删除模块时,也无需重新设置多个模块的启动顺序,减少了出错概率,解决了现有技术中按照应用程序的模块的依赖关系手动确定模块的启动顺序易出错的问题,实现了准确启动应用程序的模块效果。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图10所示的结构仅为示意,终端可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile InternetDevices,MID)、PAD等终端设备。图10其并不对上述电子装置的结构造成限定。例如,终端还可包括比图10中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图10所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行应用程序启动方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
检测是否接收到第一指示信息,其中,第一指示信息用于指示第一模块完成启动;在检测出接收到第一指示信息的情况下,基于预先得到的订阅信息确定订阅了第一指示信息的第二模块;启动第二模块,其中,第二模块被设置为在第一模块的完成启动的情况下启动,应用程序包括多个模块,多个模块包括第一模块和第二模块。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在检测是否接收到第一指示信息之前,接收启动指令,其中,启动指令用于启动应用程序;接收多个模块响应于启动指令发送的订阅请求,其中,订阅请求用于订阅与各个模块对应的前序模块的指示信息,各个模块被设置为在前序模块完成启动之后启动;基于各个模块的订阅请求,生成订阅信息。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:基于订阅请求记录第一指示信息与订阅了第一指示信息的模块之间的对应关系,生成订阅信息,以基于各个模块的订阅请求,生成订阅信息;基于订阅信息中的对应关系,确定与第一指示信息对应的第二模块,以基于预先得到的订阅信息确定订阅了第一模块的指示信息的第二模块。
可选地,对应关系包括:一个模块对应一个或多个指示信息的对应关系,在检测出接收到所述第二模块订阅的所述一个或多个指示信息之后,启动所述第二模块。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在接收启动指令之后,启动多个模块中的第一个模块,多个模块中除第一个模块之外的其他模块被设置为在第一个模块启动之后启动。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:基于订阅信息调用预先指定的第二模块的启动函数,以启动第二模块,以实现调用第二模块的启动函数,以启动第二模块。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:若第二模块被设置为在多个第一模块的完成启动的情况下启动,则通过启动函数检测是否接收到多个第一指示信息,若检测出接收到多个第一指示信息的情况下,执行启动函数,以启动第二模块。
可选地,启动函数中还设置有发送指令,发送指令用于在启动第二模块完成之后发送第二指示信息,其中,第二指示信息用于指示第二模块完成启动。
通过上述实施例,通知中心在启动之后(该启动可以基于应用程序的启动指令而启动),检测是否接收到第一模块的指示信息,若接收到指示信息,基于预先得到的订阅信息确定订阅了该指示信息的第二模块,并调用该第二模块的启动函数,以启动第二模块。在该实施例中,通知中心可以在获取到用于指示第一模块完成启动的指示信息之后,确定第二模块依赖的第一模块完成启动,则开始启动第二模块,而无需程序员手动启动第二模块。在该实施方案中,待启动模块依据其所依赖的模块完成启动的通知来启动第二模块,无需手动设置多个模块的启动顺序,在增加或删除模块时,也无需重新设置多个模块的启动顺序,减少了出错概率,解决了现有技术中按照应用程序的模块的依赖关系手动确定模块的启动顺序易出错的问题,实现了准确启动应用程序的模块效果。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (16)
1.一种应用程序启动方法,所述应用程序包括多个模块,其特征在于,包括:
检测是否接收到第一指示信息,其中,所述第一指示信息用于指示第一模块完成启动,所述多个模块包括所述第一模块;
在检测出接收到所述第一指示信息的情况下,基于预先得到的订阅信息确定订阅了所述第一指示信息的第二模块,所述多个模块包括所述第二模块;
启动所述第二模块,其中,所述第二模块被设置为在所述第一模块完成启动的情况下启动。
2.根据权利要求1所述的方法,其特征在于,在检测是否接收到第一指示信息之前,所述方法还包括:
接收启动指令,其中,所述启动指令用于启动所述应用程序;
接收所述多个模块响应于所述启动指令发送的订阅请求,其中,所述订阅请求用于订阅与各个模块对应的前序模块的指示信息,所述各个模块被设置为在所述前序模块完成启动之后启动;
基于所述各个模块的订阅请求,生成所述订阅信息。
3.根据权利要求2所述的方法,其特征在于,
基于所述各个模块的订阅请求,生成所述订阅信息包括:基于所述订阅请求记录第一指示信息与订阅了所述第一指示信息的模块之间的对应关系,生成所述订阅信息;
基于预先得到的订阅信息确定订阅了所述第一指示信息的第二模块包括:基于所述订阅信息中的对应关系,确定与所述第一指示信息对应的第二模块。
4.根据权利要求3所述的方法,其特征在于,所述对应关系包括:一个模块与一个或多个指示信息的对应关系,启动所述第二模块包括:
在检测出接收到所述第二模块订阅的所述一个或多个指示信息之后,启动所述第二模块。
5.根据权利要求2所述的方法,其特征在于,在接收启动指令之后,所述方法还包括:
启动所述多个模块中的第一个模块,所述多个模块中除所述第一个模块之外的其他模块被设置为在所述第一个模块启动之后启动。
6.根据权利要求1至5中任意一项所述的方法,其特征在于,启动所述第二模块包括:
基于所述订阅信息调用预先指定的所述第二模块的启动函数,以启动所述第二模块。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
若所述第二模块被设置为在多个所述第一模块的完成启动的情况下启动,则通过所述启动函数检测是否接收到多个第一指示信息,若检测出接收到多个所述第一指示信息的情况下,执行所述启动函数,以启动所述第二模块。
8.根据权利要求6所述的方法,其特征在于,所述启动函数中还设置有发送指令,所述发送指令用于在启动所述第二模块完成之后发送第二指示信息,其中,所述第二指示信息用于指示所述第二模块完成启动。
9.一种应用程序启动装置,所述应用程序包括多个模块,其特征在于,包括:
检测单元,用于检测是否接收到第一指示信息,其中,所述第一指示信息用于指示第一模块完成启动,所述多个模块包括所述第一模块;
确定单元,用于在检测出接收到所述第一指示信息的情况下,基于预先得到的订阅信息确定订阅了所述第一指示信息的第二模块,所述多个模块包括所述第二模块;
第一启动单元,用于启动所述第二模块,其中,所述第二模块被设置为在所述第一模块完成启动的情况下启动。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
第一接收单元,用于在检测是否接收到第一指示信息之前,接收启动指令,其中,所述启动指令用于启动所述应用程序;
第二接收单元,用于接收所述多个模块响应于所述启动指令发送的订阅请求,其中,所述订阅请求用于订阅与各个模块对应的前序模块的指示信息,所述各个模块被设置为在所述前序模块完成启动之后启动;
生成单元,用于基于所述各个模块的订阅请求,生成所述订阅信息。
11.根据权利要求10所述的装置,其特征在于,
所述生成单元包括:生成模块,用于基于所述订阅请求记录第一指示信息与订阅了所述第一指示信息的模块之间的对应关系,生成所述订阅信息;
所述确定单元包括:确定模块,用于基于所述订阅信息中的对应关系,确定与所述第一指示信息对应的第二模块。
12.根据权利要求11所述的装置,其特征在于,所述对应关系包括:一个模块对应一个或多个指示信息的对应关系,所述第一启动单元包括:
启动模块,用于在检测出接收到所述第二模块订阅的所述一个或多个指示信息之后,启动所述第二模块。
13.根据权利要求10所述的装置,其特征在于,所述装置还包括:
第二启动单元,用于在接收启动指令之后,启动所述多个模块中的第一个模块,所述多个模块中除所述第一个模块之外的其他模块被设置为在所述第一个模块启动之后启动。
14.根据权利要求9至13中任意一项所述的装置,其特征在于,所述第一启动单元包括:
调用模块,用于基于所述订阅信息调用预先指定的所述第二模块的启动函数,以启动所述第二模块。
15.根据权利要求14所述的装置,其特征在于,所述装置还包括:
执行单元,用于若所述第二模块被设置为在多个所述第一模块的完成启动的情况下启动,则通过所述启动函数检测是否接收到多个第一指示信息,若检测出接收到多个所述第一指示信息的情况下,执行所述启动函数,以启动所述第二模块。
16.根据权利要求15所述的装置,其特征在于,所述启动函数中还设置有发送指令,所述发送指令用于在启动所述第二模块完成之后发送第二指示信息,其中,所述第二指示信息用于指示所述第二模块完成启动。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611102666.3A CN108132832B (zh) | 2016-12-01 | 2016-12-01 | 应用程序启动方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611102666.3A CN108132832B (zh) | 2016-12-01 | 2016-12-01 | 应用程序启动方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108132832A true CN108132832A (zh) | 2018-06-08 |
CN108132832B CN108132832B (zh) | 2021-01-19 |
Family
ID=62387826
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611102666.3A Active CN108132832B (zh) | 2016-12-01 | 2016-12-01 | 应用程序启动方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108132832B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109783158A (zh) * | 2019-01-14 | 2019-05-21 | 深圳市脸萌科技有限公司 | 应用启动任务处理方法及装置 |
US20200082472A1 (en) * | 2018-09-11 | 2020-03-12 | Apple Inc. | Systems and methods for providing electronic services at a point of sale |
CN111324385A (zh) * | 2018-12-12 | 2020-06-23 | 中兴通讯股份有限公司 | 应用模块的启动方法、容器、控制设备及可读存储介质 |
CN112579198A (zh) * | 2020-12-09 | 2021-03-30 | 珠海格力电器股份有限公司 | 一种启动应用程序的方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080163246A1 (en) * | 2006-12-29 | 2008-07-03 | Fabrice Jogand-Coulomb | Methods for launching a program application |
CN103946799A (zh) * | 2011-10-24 | 2014-07-23 | 赛门铁克公司 | 基于应用程序对其他应用程序的依赖性对其自动执行操作 |
CN104660694A (zh) * | 2015-02-09 | 2015-05-27 | 北京博雅立方科技有限公司 | 服务调用方法及装置 |
CN104765620A (zh) * | 2014-01-02 | 2015-07-08 | 国际商业机器公司 | 一种程序模块部署的方法和系统 |
CN104778064A (zh) * | 2015-04-17 | 2015-07-15 | 魅族科技(中国)有限公司 | 一种应用程序启动方法及装置 |
-
2016
- 2016-12-01 CN CN201611102666.3A patent/CN108132832B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080163246A1 (en) * | 2006-12-29 | 2008-07-03 | Fabrice Jogand-Coulomb | Methods for launching a program application |
CN103946799A (zh) * | 2011-10-24 | 2014-07-23 | 赛门铁克公司 | 基于应用程序对其他应用程序的依赖性对其自动执行操作 |
CN104765620A (zh) * | 2014-01-02 | 2015-07-08 | 国际商业机器公司 | 一种程序模块部署的方法和系统 |
CN104660694A (zh) * | 2015-02-09 | 2015-05-27 | 北京博雅立方科技有限公司 | 服务调用方法及装置 |
CN104778064A (zh) * | 2015-04-17 | 2015-07-15 | 魅族科技(中国)有限公司 | 一种应用程序启动方法及装置 |
Non-Patent Citations (1)
Title |
---|
ERICH GAMMA等: "《设计模式:可复用面向对象软件的基础》", 31 July 2010 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200082472A1 (en) * | 2018-09-11 | 2020-03-12 | Apple Inc. | Systems and methods for providing electronic services at a point of sale |
CN111324385A (zh) * | 2018-12-12 | 2020-06-23 | 中兴通讯股份有限公司 | 应用模块的启动方法、容器、控制设备及可读存储介质 |
CN109783158A (zh) * | 2019-01-14 | 2019-05-21 | 深圳市脸萌科技有限公司 | 应用启动任务处理方法及装置 |
CN112579198A (zh) * | 2020-12-09 | 2021-03-30 | 珠海格力电器股份有限公司 | 一种启动应用程序的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108132832B (zh) | 2021-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103793323B (zh) | 嵌入式软件的自动测试装置及其自动测试方法 | |
CN108132832A (zh) | 应用程序启动方法和装置 | |
JP2019518292A (ja) | 会話サンプルに基づいて自然言語機械学習を使用してユーザ要求に応答する技術 | |
CN112114892B (zh) | 深度学习模型的获取方法、加载方法及选取方法 | |
CN106844137A (zh) | 服务器的监控方法和装置 | |
CN109388532A (zh) | 测试方法、装置、电子设备及计算机可读取存储介质 | |
CN108563579B (zh) | 白盒测试方法、装置、系统及存储介质 | |
CN106126424B (zh) | 一种脚本可视化的自动化测试方法、装置和移动终端 | |
CN113672441B (zh) | 对智能设备的测试方法及装置 | |
CN108228444A (zh) | 一种测试方法和装置 | |
CN107741950A (zh) | 数据同步任务的处理方法、装置、处理器及服务端 | |
CN114237676B (zh) | 一种fpga逻辑更新方法、装置、设备及可读存储介质 | |
CN110413528A (zh) | 测试环境智能配置方法及系统 | |
CN109753425A (zh) | 弹窗处理方法及装置 | |
CN107391106A (zh) | 相机参数的初始化方法及终端 | |
CN111858364A (zh) | 测试终端的参数配置方法、装置及系统 | |
CN108597499B (zh) | 语音处理方法以及语音处理装置 | |
CN111128139B (zh) | 无侵入式语音测试方法及装置 | |
CN104484176B (zh) | 一种安卓系统窗口对象获取方法和装置 | |
CN106021004B (zh) | 用户行为模拟单元、测试系统、以及测试方法 | |
EP2930616B1 (en) | Device and method for generating application package | |
CN104391742B (zh) | 应用优化方法和装置 | |
CN107451067B (zh) | 下载测试的处理方法及相关产品 | |
US11120892B2 (en) | Content testing during image production | |
CN111026651B (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 |