原生与JS交互的消息处理方法与流程

文档序号:26139133发布日期:2021-08-03 14:22阅读:80来源:国知局
原生与JS交互的消息处理方法与流程

本发明是关于多语言联合开发技术领域,特别是关于一种原生与js交互的消息处理方法。



背景技术:

目前使用多语言开发是一种常用开发方式,很多应用都不再采用单一的语言进行开发,而是各取语言之所长缩短研发时间提高研发效率。但是,在多语言开发的过程中多语言交互就是非常重要的一块,而往往技术人员忽略了交互过程中的处理方式,导致结构层次混乱,交互过程中出现消息多次发送或收不到消息等问题,并且很难排查,从而达不到缩短研发时间提高研发效率的初衷,此时急需一种交互消息处理方式来解决这个问题。

作为多语言开发客户端,现有的交互模式中,存在着交互不流畅,消息发送流程复杂,调用层级过多等问题,并且对于同一消息不同模块做不同处理的问题处理代码冗余性高,进而增加了网络带宽,可视显示及反应速度都降低及设备发热等问题;在代码管理方面,冗余的代码相互引用,相互调用,很容易出现循环引用,甚至应用崩溃的不好体验。

公开于该背景技术部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。



技术实现要素:

本发明的目的在于提供一种原生与js交互的消息处理方法,可以减少调用流程,减少代码冗余,可复用可扩展,且降低了研发时间成本和带宽损耗,并提高了代码运行效率。

为实现上述目的,本发明提供了一种原生与js交互的消息处理方法,其特征在于,包括:制定消息映射表l。创建原生管理模块n,并创建第一方法和第二方法。创建处理消息的子模块m1、子模块m2和子模块m3,且子模块m1、子模块m2和子模块m3分别继承自原生管理模块n,并在内部实现第二方法。js发消息模块给原生管理模块n发送第一消息,且原生管理模块n根据第一消息的消息名称在消息映射表l中找到对应的子模块m1,并由子模块m1调用自己实现的第二方法进行处理。其中,子模块m1是根据第一消息所携带的消息名称来区分具体需要做的操作,并分别进行处理。其中,第二方法为子模块m1需要执行的具体处理方法的声明。

在本发明的一实施方式中,js发消息模块给原生管理模块n发送第二消息,且原生管理模块n根据第二消息的消息名称在消息映射表l中找到对应的子模块m2,并由子模块m2调用自己实现的第二方法进行处理。其中,子模块m2是根据第二消息所携带的消息名称来区分具体需要做的操作,并分别进行处理。其中,第二方法为子模块m2需要执行的具体处理方法的声明。

在本发明的一实施方式中,js发消息模块给原生管理模块n发送第三消息,且原生管理模块n根据第三消息的消息名称在消息映射表l中找到对应的子模块m3,并由子模块m3调用自己实现的第二方法进行处理。其中,子模块m3是根据第三消息所携带的消息名称来区分具体需要做的操作,并分别进行处理。其中,第二方法为子模块m3需要执行的具体处理方法的声明。

在本发明的一实施方式中,js发消息模块给原生管理模块n发送第四消息,且原生管理模块n根据第四消息的消息名称在消息映射表l中找到对应的子模块m1和子模块m2,并分别让子模块m1和子模块m2调用自己实现的第二方法进行处理。其中,子模块m1和子模块m2是根据第四消息所携带的消息名称来区分具体需要做的操作,并分别进行处理。其中,第二方法为子模块m1和子模块m2需要执行的具体处理方法的声明。

在本发明的一实施方式中,子模块m1、子模块m2和子模块m3所处理的同一类的消息能够放到一个子模块中进行处理,且当有需要多个子模块处理的消息时,多个子模块都能够接收到消息并进行处理。

在本发明的一实施方式中,第一方法是通过消息名称在所述消息映射表l中查找到对应的子模块名称。

与现有技术相比,根据本发明的原生与js交互的消息处理方法,可以减少调用流程,减少代码冗余,可复用可扩展,且降低了研发时间成本和带宽损耗,并提高了代码运行效率。

附图说明

图1是根据本发明一实施方式的原生与js交互的消息处理方法的流程示意图;

图2是根据本发明一实施方式的原生与js交互的消息处理方法的收到消息的流程示意图;

图3是根据本发明一实施方式的用于执行原生与js交互的消息处理方法的电子设备的结构示意图。

具体实施方式

下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。

除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其它元件或其它组成部分。

图1是根据本发明一实施方式的原生与js交互的消息处理方法的流程示意图。如图1至所示,第一方面,根据本发明优选实施方式的一种原生与js交互的消息处理方法,其特征在于,包括:s1,制定消息映射表l。s2,创建原生管理模块n,并创建第一方法和第二方法。s3,创建处理消息的子模块m1、子模块m2和子模块m3,且子模块m1、子模块m2和子模块m3分别继承自原生管理模块n,并在内部实现第二方法。s4,js发消息模块给原生管理模块n发送第一消息,且原生管理模块n根据第一消息的消息名称在消息映射表l中找到对应的子模块m1,并由子模块m1调用自己实现的第二方法进行处理。其中,子模块m1是根据第一消息所携带的消息名称来区分具体需要做的操作,并分别进行处理。其中,第二方法为子模块m1需要执行的具体处理方法的声明。

在本发明的一实施方式中,js发消息模块给原生管理模块n发送第二消息,且原生管理模块n根据第二消息的消息名称在消息映射表l中找到对应的子模块m2,并由子模块m2调用自己实现的第二方法进行处理。其中,子模块m2是根据第二消息所携带的消息名称来区分具体需要做的操作,并分别进行处理。其中,第二方法为子模块m2需要执行的具体处理方法的声明。

在本发明的一实施方式中,js发消息模块给原生管理模块n发送第三消息,且原生管理模块n根据第三消息的消息名称在消息映射表l中找到对应的子模块m3,并由子模块m3调用自己实现的第二方法进行处理。其中,子模块m3是根据第三消息所携带的消息名称来区分具体需要做的操作,并分别进行处理。其中,第二方法为子模块m3需要执行的具体处理方法的声明。

在本发明的一实施方式中,js发消息模块给原生管理模块n发送第四消息,且原生管理模块n根据第四消息的消息名称在消息映射表l中找到对应的子模块m1和子模块m2,并分别让子模块m1和子模块m2调用自己实现的第二方法进行处理。其中,子模块m1和子模块m2是根据第四消息所携带的消息名称来区分具体需要做的操作,并分别进行处理。其中,第二方法为子模块m1和子模块m2需要执行的具体处理方法的声明。

在本发明的一实施方式中,子模块m1、子模块m2和子模块m3所处理的同一类的消息能够放到一个子模块中进行处理,且当有需要多个子模块处理的消息时,多个子模块都能够接收到消息并进行处理。

在本发明的一实施方式中,第一方法是通过消息名称在所述消息映射表l中查找到对应的子模块名称。

第二方面,本发明实施例还提供了一种存储介质,存储介质存储有计算机可执行指令,计算机可执行指令用于执行上述的原生与js交互的消息处理方法。

其中,存储介质可以是计算机能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(mo)等)、光学存储器(例如cd、dvd、bd、hvd等)、以及半导体存储器(例如rom、eprom、eeprom、非易失性存储器(nandflash)、固态硬盘(ssd))等。

图3是根据本发明一实施方式的用于执行原生与js交互的消息处理方法的电子设备的结构示意图。如图3所示,第三方面,本发明的另一个实施例的一种电子设备。电子设备1100可以是具备计算能力的主机服务器、个人计算机pc、或者可携带的便携式计算机或终端等。本发明具体实施例并不对电子设备的具体实现做限定。

该电子设备1100包括至少一个处理器(processor)1110、通信接口(communicationsinterface)1120、存储器(memoryarray)1130和总线1140。其中,处理器1110、通信接口1120、以及存储器1130通过总线1140完成相互间的通信。

通信接口1120用于与网元通信,其中网元包括例如虚拟机管理中心、共享存储等。

处理器1110用于执行程序。处理器1110可能是一个中央处理器cpu9,或者是专用集成电路asic(applicationspecificintegratedcircuit),或者是被配置成实施本发明实施例的一个或多个集成电路。

存储器1130用于可执行的指令。存储器1130可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。存储器1130也可以是存储器阵列。存储器1130还可能被分块,并且块可按一定的规则组合成虚拟卷。存储器1130存储的指令可被处理器1110执行,以使处理器1110能够执行上述任意方法实施例中的原生与js交互的消息处理方法。

图2是根据本发明一实施方式的原生与js交互的消息处理方法的收到消息的流程示意图。如图2所示,首先在映射消息列表中先注册消息处理模块和消息名称的对应关系,然后收到消息的流程图如下:在实际应用中,本发明的原生与js交互的消息处理方法是在研发过程中针对js交互设计的设计模式,以下会说明详细步骤,以js交互为例,先定义示例使用表示字母:字母j代表js发消息模块(非原生模块),字母n代表原生管理模块(原生分配消息模块),字母d代表原生分配消息模块定义的子模块需要实现的方法,字母l代表消息映射表(对应关系表格),字母m1代表音视频消息处理模块,字母m2代表音版本相关处理模块,字母m3代表个人信息处理模块…等这样的模块可以有n个,根据需要可以自己定义,示例中使用m1、m2和m3来举例,字母op1表示关闭麦克风消息,op2表示版本更新消息,op3表示为更新个人信息消息,op4表示获取服务信息消息。具体包含以下步骤:

步骤1、首先制定消息映射表l,根据消息分类op1属于音视频类的消息,所以以op1为键,以m1的类名作为值;同样的方式op2属于版本相关模块,所以以op2为键,以m2的类名作为值;op3属于个人信息相关模块,所以以op3为键,m3的类名作为值;op4这个消息m1和m2模块调用需要处理,所以m1和m2模块都添加一下对应关系;这样对应之后就是op1:[m1],op2:[m2],op3:[m3],op4:[m1,m2],对应映射表格定制完毕。

步骤2、创建原生管理模块n,创建分配模块并创建两个方法,一个方法是通过消息名称在对应关系表格l中查找到对应的子模块名称;另一个方法是子模块需要执行的具体消息处理方法的声明d,d的具体实现是各个子模块自己来实现。

步骤3、创建处理消息的子模块m1、m2、m3,分别继承自原生管理模块n,并在内部实现父类n定义好的方法d。

步骤4、js发消息模块给原生管理模块n发了一个op1,n收到该消息之后,通过op1中的消息名称在消息映射表l中找到了对应的处理模块m1,此时由m1调用自己实现的方法d,然后根据消息数据去关闭对应的麦克风;js发消息模块给原生管理模块n发一个op2的消息,n收到之后,通过op2中的消息名称在消息映射表l中找到对应的处理模块m2,此时由m2调用自己实现的方法d,处理版本更新;op3消息也是同样的流程;当js发消息模块给原生管理模块n发了一个op4消息时,n收到消息之后,通过op4中的消息名称在对应表格中找到处理模块m1和m2,并分别让m1和m2调用自己的实现方法d。

步骤5、处理模块中实现的d方法,处理方式是根据消息携带的消息名称来区分具体要做的操作,并分别进行处理即可。

通过功能模块化,一类的消息处理放到一个模块,有需要多个模块都处理的消息也可以多模块都能接收到并进行处理,减少了代码的杂乱冗余。

其中,是否处理消息的确定方法,主要在于是否在消息映射表l中注册了消息对应关系。

上述步骤2的优势在于,各个消息处理子模块m1、m2、m2和n是继承关系,分别只实现继承方法d即可,没有根据不同的消息找到对应的页面或者页面相关类去做处理,造成代码相互引用存在隐患。

总之,本发明的原生与js交互的消息处理方法,可以减少调用流程,减少代码冗余,可复用可扩展,且降低了研发时间成本和带宽损耗,并提高了代码运行效率。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1