CN108345507A - 一种JS模块与Java模块之间的通信方法及装置 - Google Patents

一种JS模块与Java模块之间的通信方法及装置 Download PDF

Info

Publication number
CN108345507A
CN108345507A CN201710046166.0A CN201710046166A CN108345507A CN 108345507 A CN108345507 A CN 108345507A CN 201710046166 A CN201710046166 A CN 201710046166A CN 108345507 A CN108345507 A CN 108345507A
Authority
CN
China
Prior art keywords
java
modules
java object
target
javascript
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
Application number
CN201710046166.0A
Other languages
English (en)
Other versions
CN108345507B (zh
Inventor
王勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201710046166.0A priority Critical patent/CN108345507B/zh
Publication of CN108345507A publication Critical patent/CN108345507A/zh
Application granted granted Critical
Publication of CN108345507B publication Critical patent/CN108345507B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/543User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

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

Description

一种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对象执行相应的操作。
举例来说,当浏览器应用需要打开本地某一文件夹时,JavaScript模块会根据V8引擎中预先注入的Java对象,并通过V8引擎的接口与Java模块的native接口进行通信,在Java模块中查找对应的文件对象,并在查找到时,进一步查找是否存在open方法,如果存在,在调用open方法打开该文件对象。
也就是说,为了避免应用通过JavaScript模块调用Java方法时页面繁忙,而导致JavaScript模块与Java模块之间通信的延迟,本发明实施例直接通过JavaScript模块的V8引擎的接口与Java模块中的native接口通信,从而能够提高两者之间的通信效率。
相应的,如果需要通过Java模块调用JavaScript模块的方法,也可以直接通过Java模块的native接口与JavaScript模块的V8引擎的接口通信,与本发明实施例所描述的方法为逆向过程,本发明实施例在此不再赘述。
进一步的,由于某些应用目前使用网络视图作为执行JavaScript的环境,而网络视图存在BOM,用户可能会使用BOM做一些非法应用,例如通过<script>标签来动态执行JavaScript,而这个JavaScript可能是没有通过这些应用的鉴权,从而会存在安全问题,采用本发明实施例,可以有效避免此类安全问题。
可见,在图1所描述的方法中,应用在需要通过JavaScript模块调用Java接口实现某一功能时,JS模块与Java模块之间的通信装置可以通过JS模块的JavaScript引擎中预先注入的Java对象,从Java模块中查找目标Java对象,当查找到目标Java对象时,确定Java模块中存在与该目标Java对象对应的目标方法,并通过JavaScript引擎调用目标方法对目标Java对象执行目标方法对应的操作。通过本发明实施例,JavaScript模块与Java模块之间不需要通过WebView就能实现,从而能在不需要打开页面的场景中,减少终端的内存占用,并在页面繁忙时,可以提高JavaScript模块与Java模块之间的通信效率,在一定程度上能够提高应用的运行性能。
请参阅图2,图2是本发明实施例公开的另一种JS模块与Java模块之间的通信方法的流程示意图。本发明实施例所描述的方法,可以包括以下步骤:
201、JS模块与Java模块之间的通信装置接收第三方应用的Java对象注入请求,并根据注入请求将Java对象注入到JavaScript引擎中。
本发明实施例中,第三方应用可以根据需要向JS模块与Java模块之间的通信装置发送Java对象注入请求,以请求注入Java对象。JS模块与Java模块之间的通信装置具体可以通过JavaBridge注入Java对象。相应的Java对象通过JavaScript引擎的接口注入到JavaScript引擎中。其中,注入的Java对象可以是在第三方应用有需求的时候注入,也可以是预先将所有的Java对象注入,本发明实施例不做限定。
具体的,将Java对象注入到JavaScript引擎中的具体方式可以为:通常请情况下,JavaScript引擎为C++语音编写的,因此,可以将Java对象转换为C++对象,从而保存在JavaScript引擎中。其中,将Java对象注入到JavaScript引擎,以便于JS模块与Java模块之间的通信装置(JavaScript模块)在需要查找具体的Java对象时,可以通过JavaScript引擎查找。
202、当接收到第三方应用的调用请求时,JS模块与Java模块之间的通信装置检测当前的运行环境,确定当前的运行环境不为页面运行环境,并执行步骤203和步骤204。
本发明实施例中,如果第三方应用需要调用某一Java对象,可以向JS模块与Java模块之间的通信装置发送调用请求,请求调用具体的Java对象。JS模块与Java模块之间的通信装置在接收到调用请求后,可以先检测当前的运行环境,从而根据当前的运行环境来确定是通过JS模块的JavaScript引擎的接口与Java模块中的native接口通信,还是通过网络视图WebView与Java模块中的native接口通信。可以理解的是,运行环境可以包括页面运行环境和非页面运行环境,即,当前所在的界面为浏览器页面时,为页面运行环境,不为浏览器页面时,为非页面运行环境。
进一步的,如果当前的运行环境为页面运行环境,JS模块与Java模块之间的通信装置则通过网络视图中查找需要的Java对象;如果不是,则不用需要启动网络视图,直接通过JavaScript引擎查找即可。
203、JS模块与Java模块之间的通信装置通过JS模块的JavaScript引擎中预先注入的Java对象,从Java模块中查找与调用请求对应的目标Java对象。
204、当查找到目标Java对象时,JS模块与Java模块之间的通信装置确定Java模块中存在与目标Java对象对应的目标方法,并执行步骤205。
205、JS模块与Java模块之间的通信装置通过JavaScript引擎调用目标方法对目标Java对象执行目标方法对应的操作。
需要说明的是,步骤204~206与上一实施例中步骤101~103相同,本发明实施例在此不再赘述。
206、JS模块与Java模块之间的通信装置确定当前的运行环境为页面运行环境,获取页面运行环境中页面的运行状态,并执行步骤207和步骤208。
本发明实施例中,如果当前的运行环境为页面运行环境,JS模块与Java模块之间的通信装置会进一步获取当前页面的运行状态,其中,运行状态可以分为繁忙状态和空闲状态,具体可以根据当前的网速、终端内存的占用率、终端运行负载等参数来确定,当然还可以根据其他参数来确定,本发明实施例不做限定。
207、当页面的运行状态为预设状态时,JS模块与Java模块之间的通信装置通过网络视图中预先注入的Java对象,从Java模块中查找目标Java对象。
本发明实施例中,预设状态可以是指空闲状态,如果当前页面比较空闲,那么通信状态可以通过网络视图中预先注入的Java对象从Java模块中查找与调用请求对应的目标Java对象。如果当前页面比较繁忙,那么通信装置可以直接通过JavaScript引擎预先注入的Java对象从Java模块中查找目标Java对象。
可以理解的是,网络视图预先可以通过addJavaScriptinterface接口添加Java对象到GinJavaBridgeHost类中,GinJavaBridgeHost会和JavaScript引擎(V8引擎)的GinJavaBridge通信,把相应的Java对象转换成V8对象(C++对象),从而注入到V8引擎中。因此,JS模块与Java模块之间的通信装置通过网络视图中预先注入的Java对象从Java模块中查找与调用请求对应的目标Java对象可以理解为:V8引擎通过网络视图查找与调用请求对应的目标Java对象。
208、当查找到目标Java对象时,JS模块与Java模块之间的通信装置确定Java模块中存在与目标Java对象对应的目标方法,并执行步骤209。
本发明实施例中,步骤208与步骤204相同,本发明实施例在此不再赘述。
209、JS模块与Java模块之间的通信装置通过网络视图调用目标方法对目标Java对象执行目标方法对应的操作。
本发明实施例中,如果Java模块中存在与目标Java对象对应的目标方法,JS模块与Java模块之间的通信装置则具体通过网络视图的接口调用目标方法来对目标Java对象执行相应的操作。
举例来说,在浏览器应用中,如果第三方应用需要通过JavaScript模块调用Java方法,JavaScript模块的V8引擎可以会使用InvokeJavaMethod方法,并通过GinJavaBridge发送进程间通讯(Inter-Process Communication,IPC)消息给网络视图的GinJavaBridgeHost。而GinJavaBridgeHost则会通过运行在background线程中的GinJavaMethodInvocationHelper,并通过jni去调用具体的java方法,以对目标Java对象执行该Java方法对应的操作。
210、当查找到目标Java对象时,JS模块与Java模块之间的通信装置确定Java模块中不存在与目标Java对象对应的目标方法,并向第三方应用返回调用错误的指示。
本发明实施例中,如果JS模块与Java模块之间的通信装置在Java模块中未查找到与目标Java对象对应的目标方法,则表示存在错误,JS模块与Java模块之间的通信装置从而会向第三方应用返回调用错误的指示,以便于第三方应用重新发起调用请求。
可见,在图2所描述的方法中,应用在需要通过JavaScript模块调用Java接口实现某一功能时,JS模块与Java模块之间的通信装置可以通过JavaScript模块的JavaScript引擎中预先注入的Java对象,从Java模块中查找目标Java对象,当查找到目标Java对象时,确定Java模块中存在与该目标Java对象对应的目标方法,并通过JavaScript引擎调用目标方法对目标Java对象执行目标方法对应的操作。通过本发明实施例,JavaScript模块与Java模块之间不需要通过WebView就能实现通信,从而能在不需要打开页面的场景中,减少终端的内存占用,并在页面繁忙时,可以提高JavaScript模块与Java模块之间的通信效率,在一定程度上能够提高应用的运行性能。进一步的,应用处于页面运行环境,且页面不繁忙时,JS模块与Java模块之间的通信装置可以通过网络视图从Java模块中调用Java方法对Java对象执行相应操作,在不处于页面运行环境或者页面繁忙的时候,直接通过JavaScript引擎从Java模块中调用Java方法对Java对象执行相应操作,从而能够较为灵活地实现JavaScript模块与Java模块之间的通信,提高通信效率。
基于上述实施例所示的通信方法,本发明实施例还公开了一种终端,该终端安装有多个应用,如浏览器应用、音视频播放器应用、即时通讯应用,等等,可用于执行上述图1和图2所示的方法流程的相应步骤。请参阅图3,图3是本发明实施例公开的一种终端的结构示意图。本发明实施例中所描述的终端可包括但不限于:处理器、网络接口及存储器。其中,终端内的处理器、网络接口及存储器可通过总线或其他方式连接,在本发明实施例所示图3中以通过总线连接为例。
其中,处理器(或称CPU(Central Processing Unit,中央处理器))是终端的计算核心以及控制核心。网络接口可选的可以包括标准的有线接口、无线接口(如Wi-Fi、移动通信接口等)。存储器(Memory)是终端中的记忆设备,用于存放程序和数据。可以理解的是,此处的存储器可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的还可以是至少一个位于远离前述处理器的存储装置。存储器提供存储空间,该存储空间存储了终端的操作系统,可包括但不限于:Android系统(一种操作系统)等等,本发明对此并不作限定。存储器的存储空间还存储了JS模块与Java模块之间的通信装置,该通信装置可以是终端上安装的应用,也可以是该应用所包含的JavaScript模块,本发明实施例不做限定。其中,该应用中还包含了Java模块。
在本发明实施例中,终端通过运行存储器中的JS模块与Java模块之间的通信装置来执行上述图1和图2所示方法流程的相应步骤。请一并参阅图4,在需要应用实现某一功能时,该JS模块与Java模块之间的装置运行如下单元:
查找单元401,用于通过JavaScript模块的JavaScript引擎中预先注入的Java对象,从Java模块中查找目标Java对象。
确定单元402,用于当所述查找单元401查找到所述目标Java对象时,确定所述Java模块中存在与所述目标Java对象对应的目标方法。
处理单元403,用于通过所述JavaScript引擎调用所述目标方法对所述目标Java对象执行所述目标方法对应的操作。
在一些可行的实施方式中,该装置还可以包括:
检测单元404,用于检测当前的运行环境。
所述确定单元402,还用于确定所述当前的运行环境不为页面运行环境,并触发所述查找单元401执行所述通过JavaScript模块的JavaScript引擎中预先注入的Java对象,从Java模块中查找目标Java对象的操作。
在一些可行的实施方式中,所述确定单元402,还用于确定所述当前的运行环境为所述页面运行环境。
该装置还可以包括:
获取单元405,用于获取所述页面运行环境中页面的运行状态。
所述查找单元401,还用于当所述页面的运行状态为预设状态时,通过网络视图中预先注入的Java对象,从Java模块中查找目标Java对象。
所确定单元402,还用于当所述查找单元401查找到所述目标Java对象时,确定所述Java模块中存在与所述目标Java对象对应的目标方法。
所述处理单元403,还用于通过所述网络视图调用所述目标方法对所述目标Java对象执行所述目标方法对应的操作。
在一些可行的实施方式中,该装置还可以包括:
接收单元406,用于接收第三方应用的Java对象注入请求.
所述处理单元403,还用于根据所述注入请求将所述Java对象注入到JavaScript引擎中。
在一些可行的实施方式中,所述查找单元401通过JavaScript模块的JavaScript引擎中预先注入的Java对象,从Java模块中查找目标Java对象的具体方式为:
当接收到第三方应用的调用请求时,通过JavaScript模块的JavaScript引擎中预先注入的Java对象,从Java模块中查找与所述调用请求对应的目标Java对象。
所述确定单元402,还用于当所述查找单元401查找到所述目标Java对象时,确定所述Java模块中不存在与所述目标Java对象对应的目标方法。
所述装置还可以包括:
发送单元407,用于向所述第三方应用返回调用错误的指示。
可见,本发明实施例中,应用在需要通过JavaScript模块调用Java接口实现某一功能时,JS模块与Java模块之间的通信装置可以通过JavaScript模块的JavaScript引擎中预先注入的Java对象,从Java模块中查找目标Java对象,当查找到目标Java对象时,确定Java模块中存在与该目标Java对象对应的目标方法,并通过JavaScript引擎调用目标方法对目标Java对象执行目标方法对应的操作。通过本发明实施例,JavaScript模块与Java模块之间不需要通过WebView就能实现通信,从而能在不需要打开页面的场景中,减少终端的内存占用,并在页面繁忙时,可以提高JavaScript模块与Java模块之间的通信效率,在一定程度上能够提高应用的运行性能。进一步的,应用处于页面运行环境,且页面不繁忙时,JS模块与Java模块之间的通信装置可以通过网络视图从Java模块中调用Java方法对Java对象执行相应操作,在不处于页面运行环境或者页面繁忙的时候,直接通过JavaScript引擎从Java模块中调用Java方法对Java对象执行相应操作,从而能够较为灵活地实现JavaScript模块与Java模块之间的通信,提高通信效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

Claims (10)

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模块之间的通信装置,其特征在于,所述装置包括:
查找单元,用于通过JS模块的JavaScript引擎中预先注入的Java对象,从Java模块中查找目标Java对象;
确定单元,用于当所述查找单元查找到所述目标Java对象时,确定所述Java模块中存在与所述目标Java对象对应的目标方法;
处理单元,用于通过所述JavaScript引擎调用所述目标方法对所述目标Java对象执行所述目标方法对应的操作。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
检测单元,用于检测当前的运行环境;
所述确定单元,还用于确定所述当前的运行环境不为页面运行环境,并触发所述查找单元执行所述通过JS模块的JavaScript引擎中预先注入的Java对象,从Java模块中查找目标Java对象的操作。
8.根据权利要求7所述的装置,其特征在于,
所述确定单元,还用于确定所述当前的运行环境为所述页面运行环境;
所述装置还包括:
获取单元,用于获取所述页面运行环境中页面的运行状态;
所述查找单元,还用于当所述页面的运行状态为预设状态时,通过网络视图中预先注入的Java对象,从Java模块中查找目标Java对象;
所述确定单元,还用于当所述查找单元查找到所述目标Java对象时,确定所述Java模块中存在与所述目标Java对象对应的目标方法;
所述处理单元,还用于通过所述网络视图调用所述目标方法对所述目标Java对象执行所述目标方法对应的操作。
9.根据权利要求6~8任一项所述的装置,其特征在于,所述装置还包括:
接收单元,用于接收第三方应用的Java对象注入请求;
所述处理单元,还用于根据所述注入请求将所述Java对象注入到JavaScript引擎中。
10.根据权利要求6~8任一项所述的装置,其特征在于,所述查找单元通过JS模块的JavaScript引擎中预先注入的Java对象,从Java模块中查找目标Java对象的具体方式为:
当接收到第三方应用的调用请求时,通过JS模块的JavaScript引擎中预先注入的Java对象,从Java模块中查找与所述调用请求对应的目标Java对象;
所述确定单元,还用于当所述查找单元查找到所述目标Java对象时,确定所述Java模块中不存在与所述目标Java对象对应的目标方法;
所述装置还包括:
发送单元,用于向所述第三方应用返回调用错误的指示。
CN201710046166.0A 2017-01-22 2017-01-22 一种JS模块与Java模块之间的通信方法及装置 Active CN108345507B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710046166.0A CN108345507B (zh) 2017-01-22 2017-01-22 一种JS模块与Java模块之间的通信方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710046166.0A CN108345507B (zh) 2017-01-22 2017-01-22 一种JS模块与Java模块之间的通信方法及装置

Publications (2)

Publication Number Publication Date
CN108345507A true CN108345507A (zh) 2018-07-31
CN108345507B CN108345507B (zh) 2022-01-07

Family

ID=62974751

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710046166.0A Active CN108345507B (zh) 2017-01-22 2017-01-22 一种JS模块与Java模块之间的通信方法及装置

Country Status (1)

Country Link
CN (1) CN108345507B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020107890A1 (en) * 2000-12-01 2002-08-08 Yang Gao Method of <script> based remote JavaScript function call of web page
US20110016449A1 (en) * 2009-07-17 2011-01-20 Yitao Yao Method and system for integrating java and javascript technologies
CN102207873A (zh) * 2011-06-15 2011-10-05 中国联合网络通信集团有限公司 基于安卓平台的JavaScript扩展对象实现方法及绑定接口结构
CN102799477A (zh) * 2012-07-16 2012-11-28 中兴通讯股份有限公司 资源访问方法及装置
CN103279541A (zh) * 2013-06-04 2013-09-04 天津市天安怡和信息技术有限公司 一种降低网页浏览器加载负载的方法及其装置
CN103677839A (zh) * 2013-12-17 2014-03-26 深圳市迈桥科技有限公司 一种跨移动终端的ui控件的生成方法及装置
CN105389222A (zh) * 2015-12-15 2016-03-09 中国科学院声学研究所 一种动态调用原生接口的方法、装置和系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020107890A1 (en) * 2000-12-01 2002-08-08 Yang Gao Method of <script> based remote JavaScript function call of web page
US20110016449A1 (en) * 2009-07-17 2011-01-20 Yitao Yao Method and system for integrating java and javascript technologies
CN102207873A (zh) * 2011-06-15 2011-10-05 中国联合网络通信集团有限公司 基于安卓平台的JavaScript扩展对象实现方法及绑定接口结构
CN102799477A (zh) * 2012-07-16 2012-11-28 中兴通讯股份有限公司 资源访问方法及装置
CN103279541A (zh) * 2013-06-04 2013-09-04 天津市天安怡和信息技术有限公司 一种降低网页浏览器加载负载的方法及其装置
CN103677839A (zh) * 2013-12-17 2014-03-26 深圳市迈桥科技有限公司 一种跨移动终端的ui控件的生成方法及装置
CN105389222A (zh) * 2015-12-15 2016-03-09 中国科学院声学研究所 一种动态调用原生接口的方法、装置和系统

Also Published As

Publication number Publication date
CN108345507B (zh) 2022-01-07

Similar Documents

Publication Publication Date Title
CN107832100B (zh) 一种apk插件的加载方法及其终端
EP3455695A1 (en) Page component dynamic layout
US20140208328A1 (en) Method for terminal acceleration, terminal and storage medium
CN111176803B (zh) 业务处理方法、装置、服务器及存储介质
CN108845950A (zh) 测试装置、测试的方法及存储介质
JP2020525881A (ja) アプリケーション処理方法、装置および記憶媒体
CN110365724B (zh) 任务处理方法、装置及电子设备
CN104516885A (zh) 浏览程序双内核组件的实现方法及装置
CN105786519B (zh) 安卓设备程序管理方法和安卓设备
US20180218276A1 (en) Optimizing Application Performance Using Finite State Machine Model and Machine Learning
CN111258680B (zh) 资源加载方法和装置、存储介质及电子装置
CN112988281B (zh) 应用启动方法及装置
CN110543348B (zh) 一种指令处理方法、系统、电子设备和存储介质
CN112306411A (zh) 数据存储方法及装置、非易失性存储介质、处理器
CN111435382B (zh) 一种页面的登录校验方法及终端
CN112988062B (zh) 一种元数据读取限制方法、装置、电子设备及介质
CN115039082A (zh) 日志写入方法、装置、电子设备以及存储介质
CN108345507A (zh) 一种JS模块与Java模块之间的通信方法及装置
CN110704157B (zh) 一种应用启动方法、相关装置及介质
CN110022341A (zh) 一种数据传输方法及相关设备
CN111625302A (zh) 函数耗时跟踪方法、设备和存储介质
CN113220296A (zh) 安卓系统交互方法及装置
CN111400060A (zh) 设备联动方法、装置、服务器和介质
CN112395521B (zh) 页面处理方法、装置、电子设备及计算机可读存储介质
CN113536164B (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