一种JS模块与Java模块之间的通信方法及装置制造方法及图纸

技术编号:18575708 阅读:18 留言:0更新日期:2018-08-01 10:42
本发明专利技术实施例公开了一种JS模块与Java模块之间的通信方法及装置。其中,该方法包括:应用在需要通过JS模块调用Java接口实现某一功能时,JS模块与Java模块之间的通信装置可以通过JS模块的JavaScript引擎中预先注入的Java对象,从Java模块中查找目标Java对象,当查找到目标Java对象时,确定Java模块中存在与该目标Java对象对应的目标方法,并通过JavaScript引擎调用目标方法对目标Java对象执行目标方法对应的操作。通过本发明专利技术实施例,JS模块与Java模块之间不需要通过网络视图就能实现通信,从而能减少终端的内存占用,提高通信效率,提高应用的运行性能。

Communication method and device between JS module and Java module

The embodiment of the invention discloses a communication method and a device between the JS module and the Java module. Among them, the method includes: when the application is needed to implement a function by calling the Java interface through the JS module, the communication device between the JS module and the Java module can find the target Java object from the Java module through the Java object that is pre injected in the JavaScript engine of the JS module, and determines the Java module when the target Java object is found. There is a target method that corresponds to the target Java object, and the target method is invoked by the JavaScript engine to perform the operation of the target method for the target Java object. Through the embodiment of the invention, the communication between the JS module and the Java module is not needed through the network view, which can reduce the memory occupancy of the terminal, improve the communication efficiency and improve the performance of the application.

【技术实现步骤摘要】
一种JS模块与Java模块之间的通信方法及装置
本专利技术涉及计算机
,具体涉及一种JS模块与Java模块之间的通信方法及装置。
技术介绍
随着终端技术的不断发展,智能手机、平板电脑等终端可以安装越来越多的应用,以丰富人们的生活,如今已成为人们工作和生活中不可缺少的电子设备。目前的安卓设备上,应用中的JavaScript与Java的通信需要通过网络视图WebView来实现。但是,WebView主要功能是用来显示页面的,在某些不需要打开页面的场景中,如果通过WebView实现JavaScript与Java之间的通信,会增加终端内存的占用。同时,在页面比较繁忙的情况下,采用这种方式会降低JavaScript与Java的通信效率,从而降低应用的运行性能。
技术实现思路
本专利技术实施例公开了一种JS模块与Java模块之间的通信方法及装置,能够减少终端内存的占用,提高JavaScript与Java之间的通信效率,从而提高应用的运行性能。第一方面,本专利技术实施例公开了一种JS模块与Java模块之间的通信方法,该方法可以包括:通过JS模块的JavaScript引擎中预先注入的Java对象,从Java模块中查找目标Java对象;当查找到所述目标Java对象时,确定所述Java模块中存在与所述目标Java对象对应的目标方法;通过所述JavaScript引擎调用所述目标方法对所述目标Java对象执行所述目标方法对应的操作。第二方面,本专利技术实施例公开了一种通信装置,该装置可以包括:查找单元,用于通过JS模块的JavaScript引擎中预先注入的Java对象,从Java模块中查找目标Java对象;确定单元,用于当所述查找单元查找到所述目标Java对象时,确定所述Java模块中存在与所述目标Java对象对应的目标方法;处理单元,用于通过所述JavaScript引擎调用所述目标方法对所述目标Java对象执行所述目标方法对应的操作。实施本专利技术实施例,具有如下有益效果:本专利技术实施例中,应用在需要通过JavaScript(简称JS)模块调用Java接口实现某一功能时,JS模块与Java模块之间的通信装置可以通过JavaScript模块的JavaScript引擎中预先注入的Java对象,从Java模块中查找目标Java对象,当查找到目标Java对象时,确定Java模块中存在与该目标Java对象对应的目标方法,并通过JavaScript引擎调用目标方法对目标Java对象执行目标方法对应的操作。通过本专利技术实施例,JavaScript模块与Java模块之间不需要通过WebView就能实现通信,从而能在不需要打开页面的场景中,减少终端的内存占用,并在页面繁忙时,可以提高JavaScript模块与Java模块之间的通信效率,在一定程度上能够提高应用的运行性能。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术实施例公开的一种JS模块与Java模块之间的通信方法的流程示意图;图2是本专利技术实施例公开的另一种JS模块与Java模块之间的通信方法的流程示意图;图3是本专利技术实施例公开的一种终端的结构示意图;图4是本专利技术实施例公开的一种JS模块与Java模块之间的通信装置的结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术实施例公开了一种JS模块与Java模块之间的通信方法及装置,能够减少终端内存的占用,提高JavaScript与Java之间的通信效率,从而提高应用的运行性能。以下分别进行详细说明。请参阅图1,图1是本专利技术实施例公开的一种JS模块与Java模块之间的通信方法的流程示意图。本专利技术实施例所描述的方法,可以包括以下步骤:101、JS模块与Java模块之间的通信装置通过JS模块的JavaScript引擎中预先注入的Java对象,从Java模块中查找目标Java对象。本专利技术实施例中,JS模块与Java模块之间的通信装置可以是JavaScript模块,也可以是浏览器应用,还可以是音视频播放器应用、即时通讯应用、购物应用,等等,本专利技术实施例不做限定。其中,JavaScript模块是采用JavaScript脚本语言开发应用程序的统称,Java模块是安卓终端设备中,采用Java语言开发应用程序的统称,在同一个应用中,可以存在部分功能由JavaScript脚本语言开发,部分功能由Java语言开发。因此,JavaScript模块和Java模块可以存在与同一应用中,也可以存在于不同应用中,本专利技术实施例不做限定。本专利技术实施例中,JavaScript引擎是JavaScript模块的引擎,具体可以是V8引擎,本专利技术实施例不做限定。Java对象是指采用Java语言编写的功能模块,如某一文件夹对象,某一图片对象,等等,本专利技术实施例不做限定。目标Java对象是指在实现某一功能时,需要通过JavaScript模块访问的Java对象。本专利技术实施例中,JavaScript引擎中会预先注入Java对象,具体可以是在有访问Java对象需求的时候注入的,也可以是JavaScript引擎通过接口将多个甚至所有的Java对象预先注入到JavaScript引擎中的,本专利技术实施例不做限定。JavaScript引擎中预先注入的Java对象相当于一个索引,便于JavaScript模块在需要时通过这个索引能够精确的查找到需要的Java对象。因此,某一应用在需要实现某种功能时,如果需要通过JavaScript模块访问Java对象,JavaScript模块可以通过JavaScript引擎中预先注入的Java对象从Java模块中查找与这个功能对应的目标Java对象。102、当查找到目标Java对象时,JS模块与Java模块之间的通信装置确定Java模块中存在与目标Java对象对应的目标方法。本专利技术实施例中,JS模块与Java模块之间的通信装置如果在查找到目标Java对象时,可以进一步判断Java模块中是否存在对应的目标方法。其中,该目标方法为需要对目标Java对象执行某一具体操作的方法,例如,打开方法、移动方法、复制或粘贴方法、删除方法,等等,本专利技术实施例不做限定。进一步的,如果判断结果为是,JS模块与Java模块之间的通信装置从而可以确定Java模块中存在与目标Java对象对应的目标方法。103、JS模块与Java模块之间的通信装置通过JavaScript引擎调用目标方法对目标Java对象执行目标方法对应的操作。本专利技术实施例中,JavaScript模块中包含了对注入Java对象某个方法的调用,因此,JS模块与Java模块之间的通信装置在Java模块中查找到与目标Java对象对应的方法后,则可以调用该方法对目标Java对象执行相应的操作。举例来说,当浏览器应用需要本文档来自技高网...

【技术保护点】
1.一种JS模块与Java模块之间的通信方法,其特征在于,所述方法包括:通过JS模块的JavaScript引擎中预先注入的Java对象,从Java模块中查找目标Java对象;当查找到所述目标Java对象时,确定所述Java模块中存在与所述目标Java对象对应的目标方法;通过所述JavaScript引擎调用所述目标方法对所述目标Java对象执行所述目标方法对应的操作。

【技术特征摘要】
1.一种JS模块与Java模块之间的通信方法,其特征在于,所述方法包括:通过JS模块的JavaScript引擎中预先注入的Java对象,从Java模块中查找目标Java对象;当查找到所述目标Java对象时,确定所述Java模块中存在与所述目标Java对象对应的目标方法;通过所述JavaScript引擎调用所述目标方法对所述目标Java对象执行所述目标方法对应的操作。2.根据权利要求1所述的方法,其特征在于,所述通过JS模块的JavaScript引擎中预先注入的Java对象,从Java模块中查找目标Java对象之前,所述方法还包括:检测当前的运行环境,确定所述当前的运行环境不为页面运行环境,并执行所述通过JS模块的JavaScript引擎中预先注入的Java对象,从Java模块中查找目标Java对象的操作。3.根据权利要求2所述的方法,其特征在于,所述方法还包括:确定所述当前的运行环境为所述页面运行环境,并获取所述页面运行环境中页面的运行状态;当所述页面的运行状态为预设状态时,通过网络视图中预先注入的Java对象,从Java模块中查找目标Java对象;当查找到所述目标Java对象时,确定所述Java模块中存在与所述目标Java对象对应的目标方法;通过所述网络视图调用所述目标方法对所述目标Java对象执行所述目标方法对应的操作。4.根据权利要求1~3任一项所述的方法,其特征在于,所述通过JS模块的JavaScript引擎中预先注入的Java对象,从Java模块中查找目标Java对象之前,所述方法还包括:接收第三方应用的Java对象注入请求,并根据所述注入请求将所述Java对象注入到JavaScript引擎中。5.根据权利要求1~3任一项所述的方法,其特征在于,所述通过JS模块的JavaScript引擎中预先注入的Java对象,从Java模块中查找目标Java对象,包括:当接收到第三方应用的调用请求时,通过JS模块的JavaScript引擎中预先注入的Java对象,从Java模块中查找与所述调用请求对应的目标Java对象;所述方法还包括:当查找到所述目标Java对象时,确定所述Java模块中不存在与所述目标Java对象对应的目标方法,并向所述第三方应用返回调用错误的指示。6.一种JS模块与Java模块之间的通信...

【专利技术属性】
技术研发人员:王勇
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1