掌桥专利:专业的专利平台
掌桥专利
首页

通信处理方法、装置、存储介质及电子设备

文献发布时间:2023-06-19 09:40:06


通信处理方法、装置、存储介质及电子设备

技术领域

本申请涉及电子技术领域,特别涉及一种通信处理方法、装置、存储介质及电子设备。

背景技术

在计算机领域,程序开发语言众多,例如Java、JavaScript、C、C++、Dart等各种语言都可以用于开发应用程序,并且各种程序开发语言各有优劣。通过不同的程序开发语言开发的应用程序,由于语言规范、接口规范等方面的差异,往往并不能直接进行通信,从而导致不同的程序开发语言开发的应用程序之间通信困难,亟待解决。

发明内容

本申请实施例提供一种通信处理方法、装置、存储介质及电子设备,可以高效实现不同应用开发语言开发的应用之间的通信。

本申请实施例提供一种通信处理方法,用于在第一应用与第二应用之间通信,所述第一应用由第一应用开发语言进行开发,所述第二应用由第二应用开发语言进行开发,所述通信处理方法包括:

获取所述第一应用由第一引擎运行时产生的通信请求;

根据所述通信请求调用所述第一引擎中的通信接口,所述通信接口由第三应用开发语言进行开发;

通过所述通信接口确定运行于第二引擎中的所述第二应用的线程;

通过所述线程将所述通信请求发送给所述第二应用的接口;

通过所述第二应用对所述通信请求进行处理。

本申请实施例还提供一种通信处理装置,用于在第一应用与第二应用之间通信,所述第一应用由第一应用开发语言进行开发,所述第二应用由第二应用开发语言进行开发,所述通信处理装置包括:

获取模块,用于获取所述第一应用由第一引擎运行时产生的通信请求;

调用模块,用于根据所述通信请求调用所述第一引擎中的通信接口,所述通信接口由第三应用开发语言进行开发;

确定模块,用于通过所述通信接口确定运行于第二引擎中的所述第二应用的线程;

发送模块,用于通过所述线程将所述通信请求发送给所述第二应用的接口;

处理模块,用于通过所述第二应用对所述通信请求进行处理。

本申请实施例还提供一种存储介质,所述存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行上述通信处理方法。

本申请实施例还提供一种电子设备,所述电子设备包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器通过调用所述存储器中存储的所述计算机程序,用于执行上述通信处理方法。

本申请实施例提供的通信处理方法,包括:获取第一应用由第一引擎运行时产生的通信请求;根据通信请求调用第一引擎中的通信接口,通信接口由第三应用开发语言进行开发;通过通信接口确定运行于第二引擎中的第二应用的线程;通过线程将通信请求发送给第二应用的接口;通过第二应用对通信请求进行处理。所述通信处理方法中,通过第三应用开发语言开发的通信接口进行中转,以确定第二应用的线程并将通信请求发送给第二应用的接口,从而可以实现不同应用开发语言开发的第一应用与第二应用之间的通信,并且通信路径短,通信过程中无需进行线程切换,因此可以高效实现不同应用开发语言开发的应用之间的通信。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的通信处理方法的第一种应用场景示意图。

图2为本申请实施例提供的通信处理方法的第一种流程示意图。

图3为本申请实施例提供的通信处理方法的第二种应用场景示意图。

图4为本申请实施例提供的通信处理方法的第二种流程示意图。

图5为本申请实施例提供的通信处理方法的第三种应用场景示意图。

图6为本申请实施例提供的第二应用的运行环境架构示意图。

图7为本申请实施例提供的通信处理装置的结构示意图。

图8为本申请实施例提供的电子设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本申请的保护范围。

本申请实施例提供一种通信处理方法,该通信处理方法可以应用于电子设备中。电子设备可以为智能手机、平板电脑、游戏设备、AR(Augmented Reality,增强现实)设备、数据存储装置、音频播放装置、视频播放装置、笔记本电脑、桌面计算设备、可穿戴设备诸如电子手表、电子眼镜、电子头盔、电子手链、电子项链、电子衣物等设备。

参考图1,图1为本申请实施例提供的通信处理方法的第一种应用场景示意图。

该通信处理方法可以应用于在第一应用A1与第二应用A2之间进行通信。第一应用A1由第一应用开发语言进行开发,第一应用A1可以运行于第一引擎B1中。第二应用A2由第二应用开发语言进行开发,第二应用A2可以运行于第二引擎B2中。其中,第一应用开发语言与第二应用开发语言为不同的应用开发语言。例如,第一应用开发语言可以为JavaScript语言,第二应用开发语言可以为Dart语言;或者,第一应用开发语言可以为Python、Lua等语言,第二应用开发语言可以为C#语言。以下仅以第一应用开发语言为JavaScript语言、第二应用开发语言为Dart语言进行说明。

在本申请的描述中,需要理解的是,诸如“第一”、“第二”等术语仅用于区分类似的对象,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。

参考图2,图2为本申请实施例提供的通信处理方法的第一种流程示意图。其中,通信处理方法包括以下步骤:

110,获取第一应用由第一引擎运行时产生的通信请求。

其中,第一应用由第一引擎来运行。例如,第一应用为JavaScript语言开发的应用时,第一引擎可以为V8引擎。V8引擎在运行第一应用时,引擎创建一个实例,即为V8Runtime。

第一引擎运行第一应用时,可以产生通信请求,该通信请求用于请求与第二应用进行通信。例如,该通信请求可以为渲染指令,用于指示第二应用对用户界面(UserInterface,UI)进行渲染。第一应用产生通信请求后,电子设备可以获取该通信请求,并进行处理。

120,根据通信请求调用第一引擎中的通信接口。

电子设备获取到第一应用产生的通信请求后,根据该通信请求调用第一引擎中的通信接口。其中,该通信接口可以集成在第一引擎中,该通信接口由第三应用开发语言进行开发。第三应用开发语言与第一应用开发语言、第二应用开发语言都不同。例如,第一引擎为V8引擎时,该通信接口可以为C++语言的通信接口。由于V8引擎是通过C++语言开发的引擎,因此V8引擎中可以集成C++语言的通信接口,并且可以直接调用C++的函数。

130,通过通信接口确定运行于第二引擎中的第二应用的线程。

其中,第二应用由第二引擎来运行。例如,第二应用为Dart语言开发的应用时,第二引擎可以为Flutter引擎。Flutter引擎为一个开源的UI工具包,可以帮助开发者通过一套代码库高效地构建精美应用。

第二应用在第二引擎中运行时,第二引擎会运行第二应用的一个线程,在Dart应用中,线程称为isolate。Dart应用启动后,开始执行主函数并运行主线程main isolate。此外,Flutter引擎默认是单线程任务处理的,如果不开启新的线程,任务默认在主线程中处理。

电子设备调用第一引擎中的通信接口,例如调用V8引擎中的C++语言的通信接口后,通过该通信接口确定运行于第二引擎中的第二应用的线程。例如,电子设备可以调用V8引擎中的C++语言的通信接口来查找Flutter引擎中的第二应用的线程。

140,通过线程将通信请求发送给第二应用的接口。

电子设备通过第一引擎中的通信接口确定第二引擎中的第二应用的线程后,即可通过该线程将第一应用的通信请求发送给第二应用的接口。

150,通过第二应用对通信请求进行处理。

电子设备通过第二应用的线程将通信请求发送给第二应用的接口后,即可通过第二应用对该通信请求进行处理。例如,该通信请求包括渲染指令时,电子设备可以通过第二应用执行该渲染指令,以渲染生成对应的用户界面(UI)。

请同时参考图3,图3为本申请实施例提供的通信处理方法的第二种应用场景示意图。

其中,第一应用A1由第一引擎B1运行时产生通信请求,随后第一引擎B1调用第一引擎B1中的通信接口B11,通过通信接口B11查找第二引擎B2中运行的第二应用的线程A21,随后通过线程A21将该通信请求发送给第二应用的接口A22,最后由第二应用A2对该应用请求进行处理。从而,即可实现第一应用A1与第二应用A2之间的通信,也即实现跨语言应用之间的通信。

在一些实施例中,参考图4,图4为本申请实施例提供的通信处理方法的第二种流程示意图。

其中,通过线程将通信请求发送给第二应用的接口,包括以下步骤:

141,通过第二引擎向线程的任务队列中添加一个任务事件,任务事件为通信请求对应的事件;

142,通过线程执行任务事件,以将通信请求发送给第二应用的接口。

电子设备确定运行于第二引擎中的第二应用的线程后,通过第二引擎向该线程的任务队列中添加一个任务事件,并通过该线程执行该任务事件,以将该通信请求发送给第二应用的接口。其中,该任务事件为该通信请求对应的事件。

可以理解的,该线程的任务队列中可以包括一个或多个任务事件,也可以不包括任务事件。当该任务队列中包括任务事件时,该线程按照顺序依次执行每一个任务事件。当执行到该通信请求对应的任务事件时,即可将该通信请求发送给第二应用的接口。

例如,在一些实施例中,该线程可以为第二应用的主线程main isolate。mainisolate包括事件循环eventloop、事件队列eventqueue以及任务队列microtask queue。其中,事件队列eventqueue负责处理I/O事件、绘制事件、手势事件以及接收其他线程消息等外部事件。任务队列microtask queue可以向主进程mainisolate内部添加事件。

其中,任务队列microtask queue中的事件的执行优先级高于事件队列eventqueue中的事件的执行优先级。例如,该线程main isolate在执行事件队列eventqueue中的事件和任务队列microtask queue中的事件时,先判断任务队列microtaskqueue是否为空,若任务队列microtask queue不为空,则执行任务队列microtask queue中的事件,若任务队列microtask queue为空,则执行事件队列eventqueue中的事件。

因此,该线程main isolate在执行任务队列microtask queue中的事件时,会阻塞事件队列eventqueue中的事件的执行,会使得事件队列eventqueue中的事件响应延时。因此,为了提高对该通信请求的响应速度,例如该通信请求包括渲染指令时,为了保证对渲染指令的及时响应,可以将该通信请求对应的事件添加到任务队列microtask queue中。

同时参考图5,图5为本申请实施例提供的通信处理方法的第三种应用场景示意图。

其中,V8引擎在运行第一应用时,在引擎中创建实例V8 Runtime。第一应用产生通信请求时,V8 Runtime调用引擎V8中的通信接口shell。通信接口shell为通过C++语言开发的通信接口。随后,通过通信接口shell确定Flutter引擎中的第二应用的线程window,并向该线程window发送调度信息,例如向该线程window的任务队列microtask queue中添加一个任务事件。其中,该线程window可以为UI线程的一个实例。随后,该线程window执行添加的任务事件,从而将第一应用的通信请求发送到第二应用的接口DartProxy。其中,接口DartProxy可以为Dart应用的一个实例,提供Dart应用的接口。随后,通过第二应用对通信请求进行处理。

此外,可以理解的,当Dart应用产生通信请求与JavaScript应用进行通信时,Dart应用可以通过接口DartProxy执行一段JS代码来调用dart2js函数,dart2js函数可以执行一段JS代码来调用V8引擎,V8引擎编译并运行对应的脚本语言,V8引擎将得到的函数返回值传递给dart2js函数,dart2js函数向接口DartProxy返回最终的结果。

同时参考图6,图6为本申请实施例提供的第二应用的运行环境架构示意图。

第二应用可以运行于Flutter引擎。其中,Flutter引擎包括框架FlutterFramework、虚拟机模块Dart VM、UI运行器UI Runner、GPU运行器GPU Runner、IO运行器IORunner、平台运行器Platform Runner以及APP层。虚拟机模块Dart VM用于运行根线程Root Isolate。UI运行器UI Runner用于运行UI线程UI Runner Thread,例如执行RootIsolate的Dart代码。GPU运行器GPU Runner用于运行GPU线程GPU RunnerThread,例如执行GPU指令。IO运行器IORunner用于运行IO线程IO RunnerThread,例如读取压缩的图片,为GPU Runner的渲染做好准备。平台运行器Platform Runner用于运行平台线程PlatformRunner Thread,例如执行与平台相关的逻辑处理,平台运行器Platform Runner为Flutter的主任务运行器。APP层用于运行应用。

由上可知,本申请实施例提供的通信处理方法,包括:获取第一应用由第一引擎运行时产生的通信请求;根据通信请求调用第一引擎中的通信接口,通信接口由第三应用开发语言进行开发;通过通信接口确定运行于第二引擎中的第二应用的线程;通过线程将通信请求发送给第二应用的接口;通过第二应用对通信请求进行处理。所述通信处理方法中,通过第三应用开发语言开发的通信接口进行中转,以确定第二应用的线程并将通信请求发送给第二应用的接口,从而可以实现不同应用开发语言开发的第一应用与第二应用之间的通信,并且通信路径短,通信过程中无需进行线程切换,因此可以高效实现不同应用开发语言开发的应用之间的通信。

本申请实施例还提供一种通信处理装置,该通信处理装置可以集成在电子设备中。该电子设备可以为智能手机、平板电脑、游戏设备、AR(Augmented Reality,增强现实)设备、数据存储装置、音频播放装置、视频播放装置、笔记本电脑、桌面计算设备、可穿戴设备诸如电子手表、电子眼镜、电子头盔、电子手链、电子项链、电子衣物等设备。该通信处理装置可以用于在第一应用与第二应用之间通信。该第一应用由第一应用开发语言进行开发,该第二应用由第二应用开发语言进行开发,第一应用开发语言与第二应用开发语言为不同的应用开发语言。

参考图7,图7为本申请实施例提供的通信处理装置200的结构示意图。其中,通信处理装置200包括:获取模块201、调用模块202、确定模块203、发送模块204以及处理模块205。

获取模块201,用于获取第一应用由第一引擎运行时产生的通信请求;

调用模块202,用于根据通信请求调用第一引擎中的通信接口;

确定模块203,用于通过通信接口确定运行于第二引擎中的第二应用的线程;

发送模块204,用于通过线程将通信请求发送给第二应用的接口;

处理模块205,用于通过第二应用对通信请求进行处理。

在一些实施例中,发送模块204用于:通过第二引擎向线程的任务队列中添加一个任务事件,任务事件为通信请求对应的事件;通过线程执行任务事件,以将通信请求发送给第二应用的接口。

通信处理装置200的各个模块的具体实现过程可以参考上述通信处理方法的各个实施例中的描述,在此不再赘述。

本申请实施例提供的通信处理装置200,包括:获取模块201,用于获取第一应用由第一引擎运行时产生的通信请求;调用模块202,用于根据通信请求调用第一引擎中的通信接口,通信接口由第三应用开发语言进行开发;确定模块203,用于通过通信接口确定运行于第二引擎中的第二应用的线程;发送模块204,用于通过线程将通信请求发送给第二应用的接口;处理模块205,用于通过第二应用对通信请求进行处理。所述通信处理装置通过第三应用开发语言开发的通信接口进行中转,以确定第二应用的线程并将通信请求发送给第二应用的接口,从而可以实现不同应用开发语言开发的第一应用与第二应用之间的通信,并且通信路径短,通信过程中无需进行线程切换,因此可以高效实现不同应用开发语言开发的应用之间的通信。

本申请实施例还提供一种电子设备。该电子设备可以为智能手机、平板电脑、游戏设备、AR(Augmented Reality,增强现实)设备、数据存储装置、音频播放装置、视频播放装置、笔记本电脑、桌面计算设备、可穿戴设备诸如电子手表、电子眼镜、电子头盔、电子手链、电子项链、电子衣物等设备。该电子设备可以用于在第一应用与第二应用之间通信。该第一应用由第一应用开发语言进行开发,该第二应用由第二应用开发语言进行开发,第一应用开发语言与第二应用开发语言为不同的应用开发语言。

参考图8,图8为本申请实施例提供的电子设备300的结构示意图。电子设备300包括处理器301和存储器302。其中,处理器301与存储器302电性连接。

处理器301是电子设备300的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或调用存储在存储器302内的计算机程序,以及调用存储在存储器302内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。

存储器302可用于存储计算机程序和数据。存储器302存储的计算机程序中包含有可在处理器中执行的指令。计算机程序可以组成各种功能模块。处理器301通过调用存储在存储器302的计算机程序,从而执行各种功能应用以及数据处理。

在本实施例中,电子设备300中的处理器301按照如下的步骤,将一个或一个以上的计算机程序的进程对应的指令加载到存储器302中,并由处理器301来运行存储在存储器302中的计算机程序,从而执行以下步骤:

获取第一应用由第一引擎运行时产生的通信请求;

根据通信请求调用第一引擎中的通信接口,通信接口由第三应用开发语言进行开发;

通过通信接口确定运行于第二引擎中的第二应用的线程;

通过线程将通信请求发送给第二应用的接口;

通过第二应用对通信请求进行处理。

在一些实施例中,通过线程将通信请求发送给第二应用的接口时,处理器301执行以下步骤:

通过第二引擎向线程的任务队列中添加一个任务事件,任务事件为通信请求对应的事件;

通过线程执行任务事件,以将通信请求发送给第二应用的接口。

在一些实施例中,该线程包括事件队列和任务队列,任务队列中的事件的执行优先级高于事件队列中的事件的执行优先级。

在一些实施例中,该线程在执行事件队列中的事件和任务队列中的事件时,判断任务队列是否为空,若任务队列不为空,则执行任务队列中的事件,若任务队列为空,则执行事件队列中的事件。

在一些实施例中,通信请求包括渲染指令,通过第二应用对通信请求进行处理时,处理器301执行以下步骤:

通过第二应用执行渲染指令,以生成对应的用户界面。

由上可知,本申请实施例提供了一种电子设备,该电子设备执行以下步骤:获取第一应用由第一引擎运行时产生的通信请求;根据通信请求调用第一引擎中的通信接口,通信接口由第三应用开发语言进行开发;通过通信接口确定运行于第二引擎中的第二应用的线程;通过线程将通信请求发送给第二应用的接口;通过第二应用对通信请求进行处理。所述电子设备通过第三应用开发语言开发的通信接口进行中转,以确定第二应用的线程并将通信请求发送给第二应用的接口,从而可以实现不同应用开发语言开发的第一应用与第二应用之间的通信,并且通信路径短,通信过程中无需进行线程切换,因此可以高效实现不同应用开发语言开发的应用之间的通信。

本申请实施例还提供一种存储介质,所述存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,所述计算机执行上述任一实施例所述的通信处理方法。

需要说明的是,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过计算机程序来指令相关的硬件来完成,所述计算机程序可以存储于计算机可读存储介质中,所述存储介质可以包括但不限于:只读存储器(ROM,Read OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁盘或光盘等。

以上对本申请实施例所提供的通信处理方法、装置、存储介质及电子设备进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

相关技术
  • 5G通信信号干扰的处理方法、装置、电子设备及存储介质
  • 交通信息处理方法、装置、电子设备及计算机存储介质
技术分类

06120112251575