CN104834555A - 调用功能模块的方法、相关装置及装置修复方法 - Google Patents
调用功能模块的方法、相关装置及装置修复方法 Download PDFInfo
- Publication number
- CN104834555A CN104834555A CN201510144881.9A CN201510144881A CN104834555A CN 104834555 A CN104834555 A CN 104834555A CN 201510144881 A CN201510144881 A CN 201510144881A CN 104834555 A CN104834555 A CN 104834555A
- Authority
- CN
- China
- Prior art keywords
- module
- function
- functional module
- trigger interface
- request message
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种调用功能模块的方法、相关装置及装置修复方法,其中,所述调用功能模块的方法包括:接收请求消息,所述请求消息用于请求调用指定功能模块;在接收到所述请求消息后执行预先存储的所述指定功能模块的功能触发接口,所述功能触发接口用于调用所述指定功能模块。采用本发明提供的调用方法,能够实现应用程序中的功能模块之间的解耦,为方便地修复/更新应用程序提供了架构基础;此外,基于本发明提供的功能调用装置,能够以插件替换原始功能模块的方式实现对针对性更新,在提高更新效率的同时节省用户流量,提高用户体验。
Description
技术领域
本发明涉及软件开发领域,更为具体而言,涉及一种调用功能模块的方法、相关装置及装置修复方法。
背景技术
现有的应用程序(Application,app),例如基于安卓系统的应用程序,其各个功能之间紧密耦合。
以页面跳转为例,当需要由A页面跳转到B页面时,现有技术采用A页面直接调用B页面的紧密耦合方式,这种方式存在如下缺陷:一旦B页面出现问题(bug)或者当需要针对B页面的某个功能进行更新时,必须以整个应用程序为基础进行更新,并且需要将更新后的完整的应用程序安装包发送给用户。用户只有安装最新版本的应用程序才能修复B页面的bug或更新B页面的功能。这无疑降低了更新效率,并且浪费了用户流量,用户体验不佳。
发明内容
为了解决现有技术所存在的缺陷,本发明实施方式提供一种调用功能模块的方法、相关装置及装置修复方法,能实现应用程序中的功能模块之间的解耦,进而提高应用程序的更新效率、降低更新所需流量,提高用户体验。
第一方面,本发明实施例提供一种调用功能模块的方法,包括:
接收请求消息,所述请求消息用于请求调用指定功能模块;
在接收到所述请求消息后执行预先存储的所述指定功能模块的功能触发接口,所述功能触发接口用于调用所述指定功能模块。
可选地,在本发明实施例的一种实现方式中,所述请求消息携带有用于标识所述指定功能模块的命令号;所述执行预先存储的所述指定功能模块的功能触发接口,包括:根据预先存储的注册信息确定与所述请求消息中的命令号对应的功能触发接口(其中,所述注册信息包括所述指定功能模块的命令号及对应的功能触发接口),执行与所述请求消息携带的命令号对应的功能触发接口。
其中,优选地,所述指定功能模块的功能触发接口是runnable接口,该runnable接口以所述指定功能模块作为跳转目标。
其中,优选地,采用哈希表存储所述注册信息。
第二方面,本发明实施例提供一种调用功能模块的方法,包括:
发起功能调用的功能模块向功能调用装置发送请求消息,所述请求消息用于请求调用指定功能模块;
所述功能调用装置在接收到所述请求消息后,执行预先存储的所述指定功能模块的功能触发接口,所述功能触发接口用于调用所述指定功能模块。
在本实施例的一种实现方式中,所述请求消息携带有用于标识所述指定功能模块的命令号;所述功能调用装置在接收到所述请求消息后,执行预先存储的所述指定功能模块的功能触发接口,包括:所述功能调用装置根据预先存储的注册信息确定与所述请求消息中的命令号对应的功能触发接口,并执行该功能触发接口,其中,所述注册信息包括所述指定功能模块的命令号及对应的功能触发接口。
其中,优选地,所述指定功能模块的功能触发接口是runnable接口,该runnable接口以所述指定功能模块作为跳转目标。
在本实施例的另一种实现方式中,所述方法还包括:加载所述指定功能模块,并在加载所述指定功能模块时,将预定义的所述指定功能模块的功能触发接口和命令号存储到所述功能调用装置。
其中,优选地,所述加载所述指定功能模块,包括:在应用程序初始化时按照功能模块的类别分批次地加载应用程序的功能模块;如果在后加载的功能模块与在先加载的功能模块具有相同的命令号,则在用在后加载的功能模块的功能触发接口替换已存储的在先加载的功能模块的功能触发接口;其中,应用程序的功能模块包括所述指定功能模块,所述功能模块的类别包括插件类功能模块和非插件类功能模块。
第三方面,本发明实施例提供一种功能调用装置,包括:
接收模块,用于接收请求消息,所述请求消息用于请求调用指定功能模块;
调用模块,用于在所述接收模块接收到所述请求消息后执行预先存储的所述指定功能模块的功能触发接口,所述功能触发接口用于调用所述指定功能模块。
在本实施例的一种实现方式中,所述请求消息携带有用于标识所述指定功能模块的命令号。所述调用模块包括:存储子模块,用于存储注册信息,所述注册信息包括所述指定功能模块的命令号及对应的功能触发接口;确定子模块,用于根据所述注册信息确定与所述请求消息中的命令号对应的功能触发接口;执行子模块,用于执行所述确定子模块确定的功能触发接口。
其中,优选地,所述指定功能模块的功能触发接口是runnable接口,该runnable接口以所述指定功能模块作为跳转目标。所述存储子模块采用哈希表存储所述注册信息。
第四方面,本发明实施例提供一种装置,该装置采用根据本发明实施例第三方面或其实现方式的功能调用装置进行功能调用,该装置包括:
多个功能模块;和
根据本发明实施例第三方面或其实现方式的功能调用装置;
其中,所述多个功能模块包括用于向所述功能调用装置发送请求消息的功能模块,所述请求消息用于请求调用所述多个功能模块中的指定功能模块;
所述功能调用装置通过执行预存储的所述指定功能模块的功能触发接口调用所述指定功能模块。
在本实施例的一种实现方式中,所述指定功能模块包括:注册子模块,用于定义所述指定功能模块的功能触发接口和命令号,以及用于将所述指定功能模块的功能触发接口和命令号存储至所述功能调用装置。所述装置还包括:加载模块,用于加载所述指定功能模块,并在加载时触发所述注册子模块,以将所述指定功能模块的功能触发接口和命令号存储到所述功能调用装置。
其中,优选地,所述加载模块具体用于,按照功能模块的类别分批次地加载所述多个功能模块;如果在后加载的功能模块与在先加载的功能模块具有相同的命令号,则用在后加载的功能模块的功能触发接口替换已存储的在先加载的功能模块的功能触发接口;其中,所述功能模块的类别包括插件类功能模块和非插件类功能模块。
第五方面,本发明实施例提供一种修复根据本发明实施例第四方面或其实现方式的功能调用装置的方法,包括:
加载用于修复待修复功能模块的插件,并以替换所述待修复功能模块的功能触发接口的方式,将所述插件的功能触发接口存储至所述功能调用装置。
在本实施例的一种实现方式中,所述插件预定义有用于调用该插件的功能触发接口以及与所述待修复功能模块相同的命令号;所述以替换所述待修复功能模块的功能触发接口的方式,将所述插件的功能触发接口存储至所述功能调用装置,包括:在加载功能模块时,首先加载所述待修复功能模块并将所述待修复功能模块的命令号和功能触发接口存储至所述功能调用装置,然后加载所述插件并将所述插件的命令号和功能触发接口存储至所述功能调用装置,并以所述插件的功能触发接口替换所述待修复功能模块的功能触发接口。
采用本发明各种实施例具有以下有益效果:
1)采用本发明,通过功能调用装置实现了功能模块之间的解耦,为针对性地修复/更新功能模块的功能提供了架构基础。
2)采用本发明提供的装置修复方法,在更新或修复装置时,仅需要下载安装相应的插件即可,这种针对性更新相对于下载安装完整的安装包而言,提高了修复效率,节省了流量,提高了用户体验。
附图说明
图1A是根据本发明实施例的一种调用功能模块的方法的流程示意图;
图1B是根据本发明实施例的一种应用程序的架构示意图;
图2是根据本发明实施例的一种调用功能模块的方法的流程示意图;
图3A是根据本发明实施例的一种功能调用装置的方块示意图;
图3B是根据本发明实施例的一种调用模块的方块示意图;
图4A是根据本发明实施例的一种采用功能调用装置30进行功能调用的装置的方块示意图;
图4B是根据本发明实施例的一种采用功能调用装置30进行功能调用的装置的方块示意图。
具体实施方式
以下结合附图和具体实施方式对本发明的各个方面进行详细阐述。其中,众所周知的模块、单元及其相互之间的连接、链接、通信或操作没有示出或未作详细说明。并且,所描述的特征、架构或功能可在一个或一个以上实施方式中以任何方式组合。本领域技术人员应当理解,下述的各种实施方式只用于举例说明,而非用于限制本发明的保护范围。还可以容易理解,本文所述和附图所示的各实施方式中的模块或单元或步骤可以按各种不同配置进行组合和设计。
图1A是根据本发明实施例的一种调用功能模块的方法的流程示意图,参照图1A,所述方法包括:
10:接收请求消息,该请求消息用于请求调用指定功能模块,换言之,该请求消息指定了需要调用的功能模块。其中,发送请求消息的功能模块可以是应用程序中的任意功能模块。
在本实施例中,“功能模块”是指应用程序中执行特定处理或任务的功能单位。示例性地,采用本实施例提供的方法的应用程序可以具有如图1B所示的架构,其中的业务、规则、全局配置、长连接管理、短连接管理、本地业务等均可以理解为本发明中提及的“功能模块”。
此外,在本实施例中,功能模块可以支持至少一种“处理”,所谓的“处理”可以理解为功能模块的一种具体功能,例如,删除缓存的功能、吊起单个页面的功能等。举例而言,一项录音服务可以看作一个“功能模块”,而该录音服务所支持的开始录音、暂停、结束等具体处理也可以看作是“功能模块”;账号注册功能可以看作一个“功能模块”,其所包含的输入账号、输入密码、输入验证码等具体处理也可以看作“功能模块”。基于上述理解,本领域技术人员应当理解,在一些情况下,功能模块就是一个处理,在一些情况下,功能模块可包含多个处理。
12:在接收到请求消息后执行预先存储的所述指定功能模块的功能触发接口,该功能触发接口用于调用所述指定功能模块。
可选地,在本实施例的一种实现方式中,所述指定功能模块的功能触发接口为runnable接口,该runnable接口以该指定功能模块作为跳转目标。例如,假设该指定功能模块对应BActivity.java代码,则在runnable接口中预先将BActivity.class设置到intent。
采用本实施例提供的方法,通过执行功能触发接口进行功能模块的调用,实现了功能模块之间的解耦,为方便地修复/更新应用程序(例如,针对应用程序的特定功能模块进行修改)提供了架构基础。
可选地,在本实施例的一种具体实现方式中,在处理10的请求消息中携带有用于标识所述指定功能模块的命令号,即,请求消息通过命令号指定需要调用的功能模块。其中,命令号可以是整型值,在java实现上可采用int类型。当然,命令号只要能用于确定或标识请求调用的功能模块即可,本实现方式不对命令号做具体限定。
在请求消息携带有命令号的情况下,处理12具体可包括:根据预先存储的注册信息确定与请求消息中的命令号对应的功能触发接口,然后执行该功能触发接口以调用指定功能模块。其中,注册信息包括所述指定功能模块的命令号及对应的功能触发接口。当然,注册信息还可以包括其它功能模块的命令号及对应的功能触发接口,以便于采用调用所述指定功能模块的方式调用其它功能模块。
可选地,在本实现方式中,采用hashmap(哈希表)存储注册信息以便于根据请求号确定需要执行的功能触发接口,其中,每个item(项)的key(键)是命令号,value(值)是功能触发接口。
图2是根据本发明实施例的一种调用功能模块的方法的流程示意图,参照图2,所述方法包括:
20:发起功能调用的功能模块向功能调用装置发送请求消息,所述请求消息用于请求调用指定功能模块。其中,发起功能调用的功能模块可以是应用程序中的任意模块。
22:功能调用装置在接收到请求消息后,执行预先存储的所述指定功能模块的功能触发接口,该功能触发接口用于调用所述指定功能模块。
可选地,在本实施例的一种实现方式中,关于请求消息以及如何执行预先存储的功能触发接口的说明,请参见图1所示实施例或相关实现方式中的说明,此处不赘述。
可选地,在本实施例的一种实现方式中,如图2中的虚线框所示,所述方法还包括:
24:加载指定功能模块,并在加载该指定功能模块时,将预定义的该指定功能模块的功能触发接口和命令号存储至功能调用装置。
在一种实际应用中,在应用程序初始化时需要加载应用程序的各个功能模块,因此,可以在应用程序初始化时执行上述处理24。
具体而言,应用程序通常包含多个功能模块,在应用程序初始化时,按照功能模块的类别分批次地加载应用程序的功能模块(包括所述指定功能模块),并且,如果在后加载的功能模块与在先加载的功能模块具有相同的命令号,则用在后加载的功能模块的功能触发接口替换已存储的在先加载的功能模块的功能触发接口,其结果是,在根据命令号执行功能触发接口时,调用的是在后加载的功能模块。其中,功能模块的类别包括插件类功能模块(例如,插件)和非插件类功能模块(例如,以Activity或Static结尾的类文件)。
更具体而言,如果应用程序的功能模块包括插件类功能模块和非插件类功能模块,则首先加载非插件类功能模块以保存其命令号和对应的功能触发接口,之后加载插件类功能模块以保存其命令号和对应的功能触发接口。这样,结合前述替换规则可以实现插件类功能模块对在先加载的功能模块的功能替换。
在另一种实际应用中,与根据功能模块的类别分批次地加载相类似地,可以根据功能模块的建立、更新或下载的时间顺序进行加载并遵循前述替换规则。也就是说,本发明实施例并不限于根据功能模块的类别来分批次加载,只要加载顺序能够达到新功能模块(例如,最新下载的用于替换应用程序中已经存在的功能模块或该功能模块的部分功能的插件)替换具有与之相同的命令号的原始功能模块(即,应用程序中已经存在的功能模块)的目的即可。
采用本实现方式,能够将应用程序的各个功能模块的命令号及对应的功能触发接口存储至功能调用装置,为功能调用装置根据请求消息进行功能模块的调用提供的基础。此外,通过分批次地加载功能模块,能够实现功能模块的替换,从而实现对应用程序的更新。也就是说,当需要对应用程序进行功能更新时,无需像现有技术那样下载和安装整个应用程序的安装包,仅需要下载和安装用于替换原始功能模块或其部分功能的新功能模块即可。
以上对本发明的一种实施例进行了详细描述,为便于本领域技术人员理解和实施本实施例,下面采用代码结合文字说明的方式(为便于描述和理解,在代码的部分位置采用文字说明的方式表示在该位置处的代码需达到的目的,本领域技术人员根据该目的能够编写相应的代码)对处理24的一种具体实现方式进行说明。
假设B页面(一种功能模块)对应BActivity.java代码,在其代码中实现如下的一段静态代码段:
在上述静态代码段中预定义了B页面的命令号和功能触发接口runnable。当应用程序启动时,通过java的Class.forName执行上述static代码段,从而将B页面的命令号和功能触发接口存储至功能调用装置。
当然,对于应用程序中的其它功能模块的处理可以与对B页面的处理相同或类似。这样,当应用程序启动时,首先获取所有页面或功能类,例如,通过文件名约定来做过滤,得到诸如所有以Activity或Static结尾的类文件;然后通过java的Class.forName来执行所有static代码段,从而在应用程序启动时完成所有功能模块的加载和注册(所谓的“注册”是指将命令号和功能触发接口存储至功能调用装置)。
接下来,以A页面调用B页面为例说明本发明的一种有益效果。如果功能调用装置接收到请求消息,并且其中的命令号为1001,则功能调用装置根据命令号1001确定并执行B页面的runable,从而调用B页面。采用这样的调用方式,无论B页面是否存在,均不影响A页面自身的功能。而在现有技术中,由于A页面与B页面强耦合(例如,A页面的代码中需记载B页面的类名等),如果B页面不存在,A页面会因为缺少类而根本无法编译。显然,采用本发明提供的思想,能够实现不同功能模块之间的解耦,从而达到动态修复bug的目的。
以上结合附图对根据本发明实施例的方法实施例进行了说明,下面结合附图对根据本发明实施例的相关装置进行说明。
图3A是根据本发明实施例的一种功能调用装置的方块示意图,参照图3A,功能调用装置30包括接收模块31和调用模块32,下面分别进行说明。
接收模块31,用于接收请求消息,该请求消息用于请求调用指定功能模块。
可选地,在本实施例的一种实现方式中,请求消息携带有用于标识所述指定功能模块的命令号。
调用模块32,用于在接收模块31接收到请求消息后执行预先存储的所述指定功能模块的功能触发接口,该功能触发接口用于调用所述指定功能模块。
可选地,在本实施例的一种实现方式中,如图3B所示,调用模块32包括:
存储子模块321,用于存储注册信息,例如,采用hashmap存储注册信息。所述注册信息包括所述指定功能模块的命令号及对应的功能触发接口。此外,还可以包括其它功能模块的命令号及对应的功能触发接口。
确定子模块322,用于根据注册信息确定与请求消息中的命令号对应的功能触发接口。
执行子模块323,用于执行确定子模块322确定的功能触发接口。
其中,所述指定功能模块的功能触发接口可以是runnable接口,该runnable接口以所述指定功能模块作为跳转目标。
在本实施例中,关于相关名称、术语的解释,以及关于各个模块或子模块所执行处理的详细说明,请参见方法实施例中的相应说明,此处不赘述。
采用本实施例提供的功能调用装置30,其通过存储和执行功能触发接口来调用相应功能模块,实现了功能模块之间的解耦,为针对性地更新各个功能模块提供了架构基础。
图4A是根据本发明实施例的一种采用功能调用装置30进行功能调用的装置的方块示意图,参照图4A,功能调用装置40包括多个功能模块(例如,功能模块41、功能模块42和功能模块43)和功能调用装置30,下面进行具体说明。
在本实施例中,所述多个功能模块中包括用于向功能调用装置30发送请求消息的功能模块,该请求消息用于请求调用所述多个功能模块中的指定功能模块,换言之,请求消息指定了多个功能模块中需要调用的功能模块,例如,通过前文提及的命令号指定需要调用的功能模块。
功能调用装置30通过执行预存储的所述指定功能模块的功能触发接口调用所述指定功能模块。
其中,关于功能调用装置30的详细说明,请参照前文相关说明,此处不赘述。
可选地,在本实施例的一种实现方式中,如图4B所示,功能模块41、功能模块42和功能模块43均包括注册子模块,分别用于定义自身的功能触发接口和命令号,以及用于将自身的功能触发接口和命令号存储至功能调用装置30。装置40还包括加载模块,用于加载所述指定功能模块并在加载时触发所述指定功能模块的注册子模块,以将所述指定功能模块的功能触发接口和命令号存储到所述功能调用装置。
在本实现方式的一种具体应用场景中,在装置40的工作过程中,装置40的功能模块41向功能调用装置30发送用于请求调用功能模块42的请求消息;功能调用装置30执行预存储的功能模块42的功能触发接口,完成对功能模块42的调用。
在本实现方式的一种具体应用场景中,装置40在开始运行时,通过加载模块按照功能模块的类型分批次地加载功能模块41、功能模块42和功能模块43,并在加载时触发相应的注册子模块,以将各功能模块的功能触发接口和命令号存储到功能调用装置30。
虽然在本实现方式中,各个功能模块均具有注册子模块,但在其它实现方式中,也可以仅有部分功能模块具有注册子模块而其它功能模块可以采用现有方法进行调用。即,在装置40中,还可以具有彼此之间直接调用而不通过功能模块装置30进行调用的功能模块。
在本实施例中,关于相关名称、术语的解释,以及关于各个模块或子模块所执行处理的详细说明,请参见方法实施例中的相应说明,此处不赘述
采用本实施例提供的装置40,通过功能调用装置30调用各个功能模块,实现了功能模块之间的解耦,为方便地更新功能模块提供了架构基础。
就图4A所示实施例中的装置40而言,如果需要对装置40中的待修复功能模块(所谓的“待修复功能模块”即需要进行修复的功能模块,属于装置40中的功能模块)进行更新,可以采用如下方法实现:加载用于修复待修复功能模块的插件,并以替换待修复功能模块的功能触发接口的方式,将所述插件的功能触发接口存储至所述功能调用装置。
其中,装置40可以在加载各个功能模块期间加载上述插件。例如在一种具体应用场景中,装置40可以是一个应用程序(例如,安卓应用程序),其在初始化时加载各个功能模块。
可选地,在本实施例的一种实现方式中,插件可以预定义有用于调用该插件的功能触发接口以及与待修复功能模块相同的命令号(参照前文的static代码段),假设命令号为1111。这样,装置40在加载功能模块时,首先加载待修复功能模块并将所述待修复功能模块的命令号和功能触发接口存储至所述功能调用装置,然后加载插件并将所述插件的命令号和功能触发接口存储至所述功能调用装置,并以所述插件的功能触发接口替换所述待修复功能模块的功能触发接口,使得在功能调用装置30的注册信息中,与1111对应的为插件的功能触发接口。这样,当功能调用装置30接收到的请求消息包含命令号1111时,执行功能触发接口调用的是插件而非待修复功能模块,从而实现了对装置40的更新。
可选地,在本实施例的一种实现方式中,由服务器将插件发送至安装有装置40的终端。
采用本实施例或其实现方式,在更新或修复装置40时,仅需下载安装相应的插件即可,无需下载安装完整的安装包,提高了修复效率,节省了流量,提高了用户体验。此外,本实施例不限制插件的数量,并且由于采用插件,因此能够灵活地进行插件的安装和卸载,也就能灵活地更新相关功能。
以上对根据本发明实施例的功能调用装置、调用方法和修复方法进行了详细说明,并且优选地适用于基于安装系统进行的应用开发或基于安卓系统开发的应用程序。当然,基于本发明提供的思想,本领域技术人员容易进行具体实现方式或应用场景方面的变化,这均落在本发明的保护范围呢。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件结合硬件平台的方式来实现。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,智能手机或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本发明说明书中使用的术语和措辞仅仅为了举例说明,并不意味构成限定。本领域技术人员应当理解,在不脱离所公开的实施方式的基本原理的前提下,对上述实施方式中的各细节可进行各种变化。因此,本发明的范围只由权利要求确定,在权利要求中,除非另有说明,所有的术语应按最宽泛合理的意思进行理解。
Claims (19)
1.一种调用功能模块的方法,其特征在于,所述方法包括:
接收请求消息,所述请求消息用于请求调用指定功能模块;
在接收到所述请求消息后执行预先存储的所述指定功能模块的功能触发接口,所述功能触发接口用于调用所述指定功能模块。
2.如权利要求1所述的方法,其特征在于,
所述请求消息携带有用于标识所述指定功能模块的命令号;
所述执行预先存储的所述指定功能模块的功能触发接口,包括:
根据预先存储的注册信息确定与所述请求消息中的命令号对应的功能触发接口,其中,所述注册信息包括所述指定功能模块的命令号及对应的功能触发接口,
执行与所述请求消息携带的命令号对应的功能触发接口。
3.如权利要求1或2所述的方法,其特征在于,
所述指定功能模块的功能触发接口是runnable接口,该runnable接口以所述指定功能模块作为跳转目标。
4.如权利要求2所述的方法,其特征在于,采用哈希表存储所述注册信息。
5.一种调用功能模块的方法,其特征在于,所述方法包括:
发起功能调用的功能模块向功能调用装置发送请求消息,所述请求消息用于请求调用指定功能模块;
所述功能调用装置在接收到所述请求消息后,执行预先存储的所述指定功能模块的功能触发接口,所述功能触发接口用于调用所述指定功能模块。
6.如权利要求5所述的方法,其特征在于,
所述请求消息携带有用于标识所述指定功能模块的命令号;
所述功能调用装置在接收到所述请求消息后,执行预先存储的所述指定功能模块的功能触发接口,包括:
所述功能调用装置根据预先存储的注册信息确定与所述请求消息中的命令号对应的功能触发接口,并执行该功能触发接口,其中,所述注册信息包括所述指定功能模块的命令号及对应的功能触发接口。
7.如权利要求5或6所述的方法,其特征在于,所述指定功能模块的功能触发接口是runnable接口,该runnable接口以所述指定功能模块作为跳转目标。
8.如权利要求5或6所述的方法,其特征在于,所述方法还包括:
加载所述指定功能模块,并在加载所述指定功能模块时,将预定义的所述指定功能模块的功能触发接口和命令号存储到所述功能调用装置。
9.如权利要求8所述的方法,其特征在于,所述加载所述指定功能模块,包括:
在应用程序初始化时按照功能模块的类别分批次地加载应用程序的功能模块;
如果在后加载的功能模块与在先加载的功能模块具有相同的命令号,则在用在后加载的功能模块的功能触发接口替换已存储的在先加载的功能模块的功能触发接口;
其中,应用程序的功能模块包括所述指定功能模块,所述功能模块的类别包括插件类功能模块和非插件类功能模块。
10.一种功能调用装置,其特征在于,包括:
接收模块,用于接收请求消息,所述请求消息用于请求调用指定功能模块;
调用模块,用于在所述接收模块接收到所述请求消息后执行预先存储的所述指定功能模块的功能触发接口,所述功能触发接口用于调用所述指定功能模块。
11.如权利要求10所述的装置,其特征在于,
所述请求消息携带有用于标识所述指定功能模块的命令号;
所述调用模块包括:
存储子模块,用于存储注册信息,所述注册信息包括所述指定功能模块的命令号及对应的功能触发接口,
确定子模块,用于根据所述注册信息确定与所述请求消息中的命令号对应的功能触发接口,
执行子模块,用于执行所述确定子模块确定的功能触发接口。
12.如权利要求10或11所述的装置,其特征在于,所述指定功能模块的功能触发接口是runnable接口,该runnable接口以所述指定功能模块作为跳转目标。
13.如权利要求11所述的装置,其特征在于,所述存储子模块采用哈希表存储所述注册信息。
14.一种采用如权利要求10-13中任一项所述的功能调用装置来进行功能调用的装置,其特征在于,该装置包括:
多个功能模块;和
如权利要求10-13中任一项所述的功能调用装置;
其中,所述多个功能模块包括用于向所述功能调用装置发送请求消息的功能模块,所述请求消息用于请求调用所述多个功能模块中的指定功能模块;
所述功能调用装置通过执行预存储的所述指定功能模块的功能触发接口调用所述指定功能模块。
15.如权利要求14所述的装置,其特征在于,所述指定功能模块包括:
注册子模块,用于定义所述指定功能模块的功能触发接口和命令号,以及用于将所述指定功能模块的功能触发接口和命令号存储至所述功能调用装置。
16.如权利要求15所述的装置,其特征在于,所述装置还包括:
加载模块,用于加载所述指定功能模块,并在加载时触发所述注册子模块,以将所述指定功能模块的功能触发接口和命令号存储到所述功能调用装置。
17.如权利要求16所述的装置,其特征在于,所述加载模块具体用于,
按照功能模块的类别分批次地加载所述多个功能模块;
如果在后加载的功能模块与在先加载的功能模块具有相同的命令号,则用在后加载的功能模块的功能触发接口替换已存储的在先加载的功能模块的功能触发接口;
其中,所述功能模块的类别包括插件类功能模块和非插件类功能模块。
18.一种修复如权利要求14-17中任一项所述的装置的方法,其特征在于,包括:
加载用于修复待修复功能模块的插件,并以替换所述待修复功能模块的功能触发接口的方式,将所述插件的功能触发接口存储至所述功能调用装置。
19.如权利要求18所述的方法,其特征在于,
所述插件预定义有用于调用该插件的功能触发接口以及与所述待修复功能模块相同的命令号;
所述以替换所述待修复功能模块的功能触发接口的方式,将所述插件的功能触发接口存储至所述功能调用装置,包括:
在加载功能模块时,首先加载所述待修复功能模块并将所述待修复功能模块的命令号和功能触发接口存储至所述功能调用装置,然后加载所述插件并将所述插件的命令号和功能触发接口存储至所述功能调用装置,并以所述插件的功能触发接口替换所述待修复功能模块的功能触发接口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510144881.9A CN104834555A (zh) | 2015-03-30 | 2015-03-30 | 调用功能模块的方法、相关装置及装置修复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510144881.9A CN104834555A (zh) | 2015-03-30 | 2015-03-30 | 调用功能模块的方法、相关装置及装置修复方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104834555A true CN104834555A (zh) | 2015-08-12 |
Family
ID=53812463
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510144881.9A Pending CN104834555A (zh) | 2015-03-30 | 2015-03-30 | 调用功能模块的方法、相关装置及装置修复方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104834555A (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105867963A (zh) * | 2015-12-14 | 2016-08-17 | 乐视云计算有限公司 | 应用程序更新方法及装置 |
CN106201219A (zh) * | 2016-07-28 | 2016-12-07 | 宇龙计算机通信科技(深圳)有限公司 | 应用程序功能快捷调用方法及系统 |
CN106599045A (zh) * | 2016-11-09 | 2017-04-26 | 上海艾融软件股份有限公司 | 一种请求发送方法及装置 |
CN106648563A (zh) * | 2015-10-30 | 2017-05-10 | 阿里巴巴集团控股有限公司 | 应用程序中共享模块的依赖解耦处理方法和装置 |
CN106897072A (zh) * | 2017-02-28 | 2017-06-27 | 北京三快在线科技有限公司 | 业务工程调用方法、装置及电子设备 |
CN107124388A (zh) * | 2016-02-25 | 2017-09-01 | 阿里巴巴集团控股有限公司 | 一种业务与算法解耦的方法、装置及系统 |
CN107193609A (zh) * | 2017-05-27 | 2017-09-22 | 北京奇虎科技有限公司 | 应用中功能模块调用方法及装置、电子设备 |
CN107273151A (zh) * | 2017-05-25 | 2017-10-20 | 西安理工大学 | 一种安全的Android App功能插件化方法 |
CN108363614A (zh) * | 2018-03-07 | 2018-08-03 | 北京恒华伟业科技股份有限公司 | 一种应用的业务模块管理方法、装置及服务器 |
CN110321141A (zh) * | 2019-06-06 | 2019-10-11 | 武汉斗鱼鱼乐网络科技有限公司 | 应用程序native层实时修复方法、设备及系统 |
CN110990177A (zh) * | 2019-11-05 | 2020-04-10 | 贝壳技术有限公司 | 故障修复方法、装置、系统、存储介质及电子设备 |
CN111190661A (zh) * | 2019-12-31 | 2020-05-22 | 腾讯科技(深圳)有限公司 | 一种数据处理方法以及设备 |
CN111221512A (zh) * | 2020-01-03 | 2020-06-02 | 杭州涂鸦信息技术有限公司 | 功能模块混用方法、电子设备和存储介质 |
CN113506569A (zh) * | 2021-06-07 | 2021-10-15 | 上海七十迈数字科技有限公司 | 一种语音交互的方法、系统及设备 |
WO2022252068A1 (zh) * | 2021-05-31 | 2022-12-08 | 西门子股份公司 | 应用程序构建方法、执行方法、计算设备以及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2006767A1 (en) * | 2004-10-28 | 2008-12-24 | Nokia Corporation | A device, method and computer program for running a modular application |
CN102541598A (zh) * | 2011-12-26 | 2012-07-04 | 深圳联友科技有限公司 | 一种动态加载组件的方法及系统 |
CN103324542A (zh) * | 2013-07-17 | 2013-09-25 | 天脉聚源(北京)传媒科技有限公司 | 一种模块间调用的方法及装置 |
CN103645928A (zh) * | 2013-12-06 | 2014-03-19 | 浪潮(北京)电子信息产业有限公司 | 一种软件功能模块处理方法及系统 |
-
2015
- 2015-03-30 CN CN201510144881.9A patent/CN104834555A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2006767A1 (en) * | 2004-10-28 | 2008-12-24 | Nokia Corporation | A device, method and computer program for running a modular application |
CN102541598A (zh) * | 2011-12-26 | 2012-07-04 | 深圳联友科技有限公司 | 一种动态加载组件的方法及系统 |
CN103324542A (zh) * | 2013-07-17 | 2013-09-25 | 天脉聚源(北京)传媒科技有限公司 | 一种模块间调用的方法及装置 |
CN103645928A (zh) * | 2013-12-06 | 2014-03-19 | 浪潮(北京)电子信息产业有限公司 | 一种软件功能模块处理方法及系统 |
Non-Patent Citations (1)
Title |
---|
段继刚: "《Linux软件管理平台设计与实现》", 30 September 2013, 机械工业出版社 * |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106648563A (zh) * | 2015-10-30 | 2017-05-10 | 阿里巴巴集团控股有限公司 | 应用程序中共享模块的依赖解耦处理方法和装置 |
CN105867963A (zh) * | 2015-12-14 | 2016-08-17 | 乐视云计算有限公司 | 应用程序更新方法及装置 |
WO2017101509A1 (zh) * | 2015-12-14 | 2017-06-22 | 乐视控股(北京)有限公司 | 应用程序更新方法及装置 |
CN107124388A (zh) * | 2016-02-25 | 2017-09-01 | 阿里巴巴集团控股有限公司 | 一种业务与算法解耦的方法、装置及系统 |
CN107124388B (zh) * | 2016-02-25 | 2020-10-30 | 创新先进技术有限公司 | 一种业务与算法解耦的方法、装置及系统 |
CN106201219B (zh) * | 2016-07-28 | 2019-08-02 | 宇龙计算机通信科技(深圳)有限公司 | 应用程序功能快捷调用方法及系统 |
CN106201219A (zh) * | 2016-07-28 | 2016-12-07 | 宇龙计算机通信科技(深圳)有限公司 | 应用程序功能快捷调用方法及系统 |
CN106599045A (zh) * | 2016-11-09 | 2017-04-26 | 上海艾融软件股份有限公司 | 一种请求发送方法及装置 |
CN106897072A (zh) * | 2017-02-28 | 2017-06-27 | 北京三快在线科技有限公司 | 业务工程调用方法、装置及电子设备 |
CN107273151A (zh) * | 2017-05-25 | 2017-10-20 | 西安理工大学 | 一种安全的Android App功能插件化方法 |
CN107193609A (zh) * | 2017-05-27 | 2017-09-22 | 北京奇虎科技有限公司 | 应用中功能模块调用方法及装置、电子设备 |
CN107193609B (zh) * | 2017-05-27 | 2021-05-07 | 北京奇虎科技有限公司 | 应用中功能模块调用方法及装置、电子设备 |
CN108363614B (zh) * | 2018-03-07 | 2022-04-12 | 北京恒华伟业科技股份有限公司 | 一种应用的业务模块管理方法、装置及服务器 |
CN108363614A (zh) * | 2018-03-07 | 2018-08-03 | 北京恒华伟业科技股份有限公司 | 一种应用的业务模块管理方法、装置及服务器 |
CN110321141A (zh) * | 2019-06-06 | 2019-10-11 | 武汉斗鱼鱼乐网络科技有限公司 | 应用程序native层实时修复方法、设备及系统 |
CN110990177A (zh) * | 2019-11-05 | 2020-04-10 | 贝壳技术有限公司 | 故障修复方法、装置、系统、存储介质及电子设备 |
CN110990177B (zh) * | 2019-11-05 | 2023-10-20 | 贝壳技术有限公司 | 故障修复方法、装置、系统、存储介质及电子设备 |
CN111190661A (zh) * | 2019-12-31 | 2020-05-22 | 腾讯科技(深圳)有限公司 | 一种数据处理方法以及设备 |
CN111221512A (zh) * | 2020-01-03 | 2020-06-02 | 杭州涂鸦信息技术有限公司 | 功能模块混用方法、电子设备和存储介质 |
CN111221512B (zh) * | 2020-01-03 | 2023-12-05 | 杭州涂鸦信息技术有限公司 | 功能模块混用方法、电子设备和存储介质 |
WO2022252068A1 (zh) * | 2021-05-31 | 2022-12-08 | 西门子股份公司 | 应用程序构建方法、执行方法、计算设备以及存储介质 |
CN113506569A (zh) * | 2021-06-07 | 2021-10-15 | 上海七十迈数字科技有限公司 | 一种语音交互的方法、系统及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104834555A (zh) | 调用功能模块的方法、相关装置及装置修复方法 | |
CN108108181B (zh) | 应用程序的功能更新方法、装置及计算机可读存储介质 | |
CN109062617B (zh) | 一种支持多类型设备的平台的应用方法、移动终端 | |
CN105138382B (zh) | 一种Android系统升级的方法及终端 | |
CN107193544B (zh) | 一种应用程序组件化开发方法及装置 | |
CN105100191A (zh) | 一种云编译实现Java应用安装的方法、装置及系统 | |
WO2006110991A1 (en) | Method and system for controlling software version updates | |
CN103699408A (zh) | 一种软件升级的方法和设备 | |
CN104834541B (zh) | 功能模块挂载方法、挂载系统及更新挂载系统的方法 | |
CN106371874A (zh) | 一种插件数据加载方法及设备 | |
CN101826026A (zh) | 嵌入式设备、嵌入式设备中固件在线升级的系统及方法 | |
CN103365644A (zh) | 一种扩展软件功能的方法及装置 | |
CN104216749A (zh) | 一种应用程序的更新方法及装置 | |
CN104731622A (zh) | 一种应用程序的加载方法、装置和移动终端 | |
CN113157345A (zh) | 前端工程自动启动方法及装置 | |
CN105872842A (zh) | 一种多桌面独立升级方法及装置 | |
CN104111843A (zh) | 一种基于沙箱的脚本更新方法及系统 | |
CN102004654B (zh) | 软件安装方法和装置 | |
CN104793998A (zh) | 终端系统资源管理方法及装置 | |
CN101930377B (zh) | 一种动态获取uid的链接库编译方法 | |
CN115658042A (zh) | 混合应用组件式开发方法、系统、设备及存储介质 | |
CN106293790B (zh) | 基于Firefox操作系统的应用程序升级方法和装置 | |
CN110851151A (zh) | 预装应用的方法、装置、终端、服务器和存储介质 | |
CN103761126A (zh) | 应用程序的升级方法和装置 | |
CN112134922B (zh) | 一种基于微服务的服务调用方法、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150812 |
|
RJ01 | Rejection of invention patent application after publication |