CN109032583A - 数据交互方法及装置 - Google Patents

数据交互方法及装置 Download PDF

Info

Publication number
CN109032583A
CN109032583A CN201810828800.0A CN201810828800A CN109032583A CN 109032583 A CN109032583 A CN 109032583A CN 201810828800 A CN201810828800 A CN 201810828800A CN 109032583 A CN109032583 A CN 109032583A
Authority
CN
China
Prior art keywords
javascript
java
layers
handler
interface
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
CN201810828800.0A
Other languages
English (en)
Other versions
CN109032583B (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.)
Beijing Xiaomi Mobile Software Co Ltd
Original Assignee
Beijing Xiaomi Mobile Software 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 Beijing Xiaomi Mobile Software Co Ltd filed Critical Beijing Xiaomi Mobile Software Co Ltd
Priority to CN201810828800.0A priority Critical patent/CN109032583B/zh
Publication of CN109032583A publication Critical patent/CN109032583A/zh
Application granted granted Critical
Publication of CN109032583B publication Critical patent/CN109032583B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

本公开是关于一种数据交互方法及装置,属于计算机技术领域。所述方法包括:Java层将Java对象转换为JavaScript句柄对象并发送至JavaScript层;JavaScript层生成JavaScript原生对象;在JavaScript原生对象的应用场景下,Java层获取JavaScript句柄对象对应的Java对象,以实现相应功能。本公开中Java层将Java对象转换为JavaScript句柄对象发送至JavaScript层,并在JavaScript层生成与Java对象对应的JavaScript原生对象,在JavaScript原生对象的应用场景下,JavaScript层以JavaScript句柄对象作为桥梁,调用Java层中的Java对象实现相应功能,该方法在JavaScript层和Java层之间实现了Java对象的传递,丰富了数据交互形式,从而为快应用中更多功能的实现提供了可能。

Description

数据交互方法及装置
技术领域
本公开涉及计算机技术领域,尤其涉及一种数据交互方法及装置。
背景技术
快应用是指与系统深度整合的、能够提供场景化体验的新型应用,快应用具有无需安装,即搜即用等特点,其面向用户端提供各种JavaScript功能接口,基于这些JavaScript功能接口,系统内的JavaScript层通过与Java层进行数据交互,可向用户提供各种服务,并使用户获得与原生应用相同的体验效果。
受限于与Java层之间的数据传输协议,JavaScript层与Java层进行交互时,仅能调用JavaScript功能接口获取一些基本类型的数据。而在很多场景下,为了实现某些功能,JavaScript层与Java层之间交互的数据类型为Java对象,此时由于JavaScript层与Java层无法进行数据交互,导致相应功能无法实现。例如,为了实现聊天功能,JavaScript层调用websocketfactory.create方法时需要Java层返回一个websocket对象,由于Java层无法传递websocket对象到JavaScript层,导致聊天功能无法实现。因此,为了在快应用中实现更多的功能,亟需提供一种新的数据交互方法。
发明内容
为克服相关技术中存在的问题,本公开提供一种数据交互方法及装置。
根据本公开实施例的第一方面,提供一种数据交互方法,所述方法包括:
JavaScript层调用JavaScript功能接口在Java层创建Java对象;
所述Java层将所述Java对象转换为JavaScript句柄对象,并通过所述JavaScript功能接口将所述JavaScript句柄对象发送至所述JavaScript层;
所述JavaScript层根据所述JavaScript句柄对象,生成JavaScript原生对象;
在所述JavaScript原生对象的应用场景下,所述JavaScript层通过所述JavaScript功能接口向所述Java层发送调用消息,所述调用消息包括所述JavaScript句柄对象;
当接收到所述调用消息时,所述Java层获取所述JavaScript句柄对象对应的Java对象,以实现相应功能。
在本公开的另一个实施例中,所述JavaScript层调用JavaScript功能接口在Java层创建Java对象,包括:
所述JavaScript层通过调用所述JavaScript功能接口的构造函数在所述Java层创建Java对象。
在本公开的另一个实施中,所述JavaScript层调用JavaScript功能接口在Java层创建Java对象,包括:
所述JavaScript层通过调用所述JavaScript功能接口的普通方法在所述Java层创建Java对象。
在本公开的另一个实施例中,所述Java层将所述Java对象转换为JavaScript句柄对象,包括:
所述Java层采用接口对象管理器将所述Java对象转换为JavaScript句柄对象,所述接口对象管理器用于将Java对象转换为JavaScript句柄对象。
在本公开的另一个实施例中,所述通过所述JavaScript功能接口将所述JavaScript句柄对象发送至所述JavaScript层之前,还包括:
所述Java层更改向所述JavaScript层返回值的Map,以使所述Java层能够通过所述JavaScript功能接口将所述JavaScript句柄对象发送至所述JavaScript层。
在本公开的另一个实施例中,所述JavaScript句柄对象包括所述Java对象对应的JavaScript原生对象属性,所述JavaScript层根据所述JavaScript句柄对象,生成JavaScript原生对象,包括:
所述JavaScript层根据所述JavaScript原生类型属性,生成JavaScript原生对象。
在本公开的另一个实施例中,所述Java层采用接口对象管理器将所述Java对象转换为JavaScript句柄对象之后,还包括:
所述接口对象管理器存储所述Java对象与所述JavaScript句柄对象之间的对应关系;
所述Java层获取所述JavaScript句柄对象对应的Java对象,以实现相应功能,包括:
所述Java层根据所述对象接口管理器中所存储的对应关系,获取所述JavaScript句柄对象对应的Java对象,并根据Java对象以实现相应功能。
根据本公开实施例的第二方面,提供了一种数据交互装置,所述装置包括:
对象创建模块,用于调用JavaScript功能接口在Java层创建Java对象;
对象转换模块,用于将所述Java对象转换为JavaScript句柄对象,并通过所述JavaScript功能接口将所述JavaScript句柄对象发送至所述JavaScript层;
对象生成模块,用于根据所述JavaScript句柄对象,生成JavaScript原生对象;
发送模块,用于在所述JavaScript原生对象的应用场景下,通过所述JavaScript功能接口向所述Java层发送调用消息,所述调用消息包括所述JavaScript句柄对象;
获取模块,用于当接收到所述调用消息时,获取所述JavaScript句柄对象对应的Java对象,以实现相应功能。
在本公开的另一个实施例中,所述对象创建模块,用于通过调用所述JavaScript功能接口的构造函数在所述Java层创建Java对象。
在本公开的另一个实施例中,所述对象创建模块,用于通过调用所述JavaScript功能接口的普通方法在所述Java层创建Java对象。
在本公开的另一个实施例中,所述对象转换模块,用于采用接口对象管理器将所述Java对象转换为JavaScript句柄对象,所述接口对象管理器用于将Java对象转换为JavaScript句柄对象。
在本公开的另一个实施例中,所述装置还包括:
更改模块,用于更改向所述JavaScript层返回值的Map,以使所述Java层能够通过所述JavaScript功能接口将所述JavaScript句柄对象发送至所述JavaScript层。
在本公开的另一个实施例中,所述JavaScript句柄对象包括所述Java对象对应的JavaScript原生对象属性;
所述对象生成模块,用于根据所述JavaScript原生类型属性,生成JavaScript原生对象。
在本公开的另一个实施例中,所述装置还包括:
存储模块,用于存储所述Java对象与所述JavaScript句柄对象之间的对应关系;
所述获取模块,用于根据所述对象接口管理器中所存储的对应关系,获取所述JavaScript句柄对象对应的Java对象,并根据Java对象以实现相应功能。
根据本公开实施例的第三方面,提供了一种数据交互装置,包括:
处理器;
用于存储处理器可执行的指令的存储器;
其中,所述处理器被配置为:
JavaScript层调用JavaScript功能接口在Java层创建Java对象;
所述Java层将所述Java对象转换为JavaScript句柄对象,并通过所述JavaScript功能接口将所述JavaScript句柄对象发送至所述JavaScript层;
所述JavaScript层根据所述JavaScript句柄对象,生成JavaScript原生对象;
在所述JavaScript原生对象的应用场景下,所述JavaScript层通过所述JavaScript功能接口向所述Java层发送调用消息,所述调用消息包括所述JavaScript句柄对象;
当接收到所述调用消息时,所述Java层获取所述JavaScript句柄对象对应的Java对象,以实现相应功能。
本公开的实施例提供的技术方案可以包括以下有益效果:
Java层将Java对象转换为JavaScript句柄对象发送至JavaScript层,并在JavaScript层生成与Java对象对应的JavaScript原生对象,在JavaScript原生对象的应用场景下,JavaScript层以JavaScript句柄对象作为桥梁,调用Java层中的Java对象执行操作,该方法在JavaScript层和Java层之间实现了Java对象的传递,丰富了数据交互形式,从而为快应用中更多功能的实现提供了可能。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种数据交互方法的流程图。
图2是根据一示例性实施例示出的一种数据交互方法的流程图。
图3是根据一示例性实施例示出的一种数据交互装置的框图。
图4是根据一示例性实施例示出的一种用于数据交互的装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种数据交互方法的流程图,如图1所示,数据交互方法用于终端中,该终端包括JavaScript层和Java层,该方法包括以下步骤。
在步骤S101中,JavaScript层调用JavaScript功能接口在Java层创建Java对象。
在步骤S102中,Java层将Java对象转换为JavaScript句柄对象,并通过JavaScript功能接口将JavaScript句柄对象发送至JavaScript层。
在步骤S103中,JavaScript层根据JavaScript句柄对象,生成JavaScript原生对象。
在步骤S104中,在JavaScript原生对象的应用场景下,JavaScript层通过JavaScript功能接口向Java层发送调用消息,调用消息包括JavaScript句柄对象。
在步骤S105中,当接收到调用消息时,Java层获取JavaScript句柄对象对应的Java对象,以实现相应功能。
本公开实施例提供的方法,Java层将Java对象转换为JavaScript句柄对象发送至JavaScript层,并在JavaScript层生成与Java对象对应的JavaScript原生对象,在JavaScript原生对象的应用场景下,JavaScript层以JavaScript句柄对象作为桥梁,调用Java层中的Java对象执行操作,该方法在JavaScript层和Java层之间实现了Java对象的传递,丰富了数据交互形式,从而为快应用中更多功能的实现提供了可能。
在本公开的另一个实施例中,JavaScript层调用JavaScript功能接口在Java层创建Java对象,包括:
JavaScript层通过调用JavaScript功能接口的构造函数在Java层创建Java对象。
在本公开的另一个实施例中,JavaScript层调用JavaScript功能接口在Java层创建Java对象,包括:
JavaScript层通过调用JavaScript功能接口的普通方法在Java层创建Java对象。
在本公开的另一个实施例中,Java层将Java对象转换为JavaScript句柄对象,包括:
Java层采用接口对象管理器将Java对象转换为JavaScript句柄对象,接口对象管理器用于将Java对象转换为JavaScript句柄对象。
在本公开的另一个实施例中,通过JavaScript功能接口将JavaScript句柄对象发送至JavaScript层之前,还包括:
Java层更改向JavaScript层返回值的Map,以使Java层能够通过JavaScript功能接口将JavaScript句柄对象发送至JavaScript层。
在本公开的另一个实施例中,JavaScript句柄对象包括Java对象对应的JavaScript原生对象属性,JavaScript层根据JavaScript句柄对象,生成JavaScript原生对象,包括:
JavaScript层根据JavaScript原生类型属性,生成JavaScript原生对象。
在本公开的另一个实施例中,Java层采用接口对象管理器将Java对象转换为JavaScript句柄对象之后,还包括:
接口对象管理器存储Java对象与JavaScript句柄对象之间的对应关系;
Java层获取JavaScript句柄对象对应的Java对象,以实现相应功能,包括:
Java层根据对象接口管理器中所存储的对应关系,获取JavaScript句柄对象对应的Java对象,并根据Java对象以实现相应功能。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
图2是根据一示例性实施例示出的一种数据交互方法的流程图,如图1所示,数据交互方法用于终端中,该终端可以为智能手机、平板电脑、笔记本电脑等。该终端所支持的操作系统可以为安卓系统、Windows系统、IOS系统等。在快应用的操作场景下,该终端包括数据交互装置,该数据交互装置包括JavaScript层和Java层,该方法包括以下步骤。
在步骤S201中,JavaScript层调用JavaScript功能接口在Java层创建Java对象。
其中,JavaScript功能接口为JavaScript层所提供的功能接口,每个JavaScript功能接口能够实现快应用中的一种功能。当因业务需求,需要实现快应用中的某种功能时,JavaScript层可调用相应的JavaScript功能接口在Java层创建Java对象,进而通过调用Java对象执行相应操作,以实现该功能。
具体地,JavaScript层调用JavaScript功能接口在Java层创建Java对象的方式,包括但不限于如下两种:
第一种方式、JavaScript层通过调用JavaScript功能接口的构造函数在Java层创建Java对象。
其中,构造函数也称为构造方法,在创建对象时由系统自动调用,用于实现对象的初始化。构造函数作为一种特殊的方法,其函数名必须与类名相同,且不带返回值,也可以认为构造函数返回的就是这个类本身的一个对象。构造函数作为一个类的入口,当使用new关键字新建一个类的实例时,类加载器会首先调用这个类的构造函数,进而基于构造函数构造成这个类的一个实例。
在本公开实施例中,当JavaScript层因业务需求需要Java层返回一个对象时,JavaScript层调用相应的JavaScript功能接口与Java层进行通信,在通信过程中向Java层发送用于构造对象的各种参数,JavaScript层在调用JavaScript功能接口时,自动调用JavaScript功能接口的构造函数,进而根据所接收到的各种参数,同步创建出该JavaScript功能接口的Java对象,该Java对象为实际的工作对象,用于执行操作,以实现某种具体的功能。在实际应用中,JavaScript层可以定义_ctor方法为构造函数,进而采用_ctor方法同步在Java层构建一个Java对象。
第二种方式、JavaScript层通过调用JavaScript功能接口的普通方法在Java层创建Java对象。
其中,普通方法也称为普通函数,普通函数的函数名可以与构造函数的函数名相同,也可以不同。普通函数必须带有返回值,且需要void来修饰。此外,普通函数可以被重写,也可以被重载。void是C语言中的一个关键字,常用在程序编写中对定义函数的参数类型、返回值、函数中指针类型进行声明,有注释和限制程序的作用。void*可以指向任何类型的数据,在C语言中,凡不加返回值类型限定的函数,就会被编译器作为返回整型值处理。
在本公开实施例中,当JavaScript层因业务需求需要Java层返回一个对象时,JavaScript层调用任一JavaScript功能接口与Java层进行通信,在通信过程中向Java层发送用于构造对象的各种参数,JavaScript层在调用该JavaScript功能接口时,调用普通函数,并根据所接收到的各种参数,创建该JavaScript功能接口或其他JavaScript功能接口的Java对象。
当然,除了采用上述两种方式调用JavaScript功能接口在Java层创建Java对象外,还可以采用其他方式,本公开实施例对此不作具体的限定。
另外,需要说明的是,本公开实施例所创建的Java对象具有两种方法(在计算机领域方法可以理解为功能),分别为返回接口名称和释放对象资源等方法。
在步骤S202中,Java层将Java对象转换为JavaScript句柄对象。
在计算机技术领域,受限于JavaScript层和Java层之间的通信协议,Java层所创建的Java对象无法通过JavaScript功能接口发送至JavaScript层,且JavaScript层需要Java层返回的是JavaScript原生对象,而JavaScript原生对象只能在JavaScript线程中创建,因此,Java层在创建Java对象后,还需要将Java对象转换为JavaScript层能够识别且可用于创建JavaScript原生对象的JavaScript句柄对象。
基于上述需求,本公开实施例可预先定义一个接口对象管理器,该接口对象管理器具有多种功能,包括将Java对象转换为JavaScript句柄对象的功能,还包括管理Java对象与JavaScript句柄对象的功能等。
基于预先定义的接口对象管理器,JavaScript层调用JavaScript功能接口在Java层创建Java对象后,Java层即可采用该接口对象管理器将Java对象转换为JavaScript句柄对象。
由于本公开实施例中提供的数据交互方法在实现具体的功能时,需要借助Java对象与JavaScript句柄对象之间的对应关系,调用相应的Java对象,因此,为了便于后续应用,接口对象管理器将Java对象转换为JavaScript句柄对象之后,还可应用其管理功能,存储Java对象与JavaScript句柄对象之间的对应关系。当然,为了节省存储空间,减少内存占用量,提升系统性能,接口对象管理器在存储Java对象与JavaScript句柄对象之间的对应关系时,可存储Java对象名称与JavaScript句柄对象ID(identity,身份标识)之间的对应关系。
在步骤S203中,Java层更改向JavaScript层返回值的Map,并通过JavaScript功能接口将JavaScript句柄对象发送至JavaScript层。
为了能够成功地将JavaScript句柄对象发送在JavaScript层,Java层还需要更改Java层向JavaScript层返回值的Map,使得更改后的Map支持JavaScript句柄对象,从而在Java层向JavaScript层返回数据时,能够将JavaScript句柄对象发送至JavaScript层。
其中,Map是Java提供的一种通用的元素存储方式,Map为一种集合类,用于存储键值对(“键”、“值”),即Map<key,value>,Map中每个键映射到一个值。
在步骤S204中,JavaScript层根据JavaScript句柄对象,生成JavaScript原生对象。
由于JavaScript层需要获取的是与Java对象具有相同功能,但隶属于不同层的JavaScript原生对象,因此,为使JavaScript层能够生成JavaScript原生对象,Java层所转换的JavaScript句柄对象应当包括Java对象对应的JavaScript原生对象属性。其中,JavaScript原生对象属性包括name、instId、_native_type_等。具体地,name用于指示JavaScript原生对象的名称,可由JavaScript层需要Java层返回的对象名称确定,例如,JavaScript层需要Java层返回的对象名称为websocket,则可确定JavaScript原生对象属性中的name为websocket。instId用于指示JavaScript原生对象的instance ID,可系统进行设置。__native_type__用于指示JavaScript原生对象的生成方式,__native_type__的属性包括instance、class等,如果__native_type__的属性为instance,说明JavaScript层接收到的JavaScript句柄对象的属性是对象,则JavaScript层可直接生成JavaScript原生对象;如果__native_type__的属性为class,则说明JavaScript层接收到的JavaScript句柄对象的属性是类,则JavaScript层需要先创建出类,再生成JavaScript原生对象。
其中,JavaScript原生对象属性结构如下:
基于JavaScript句柄对象包括的JavaScript原生对象属性,JavaScript层根据JavaScript句柄对象,生成JavaScript原生对象时,包括但不限于:
JavaScript层将JavaScript原生对象属性中的name作为JavaScript原生对象的名称;JavaScript层根据JavaScript原生对象属性中的instId,确定JavaScript原生对象的instance ID;JavaScript层根据JavaScript原生对象属性中的__native_type__,确定JavaScript原生对象的生成方式,进而通过对JavaScript句柄对象进行重包装,生成JavaScript原生对象。例如,JavaScript层将JavaScript句柄对象包装成websocket对象。
需要说明的是,由于JavaScript句柄对象是将Java对象转换得到的,而JavaScript原生对象是根据JavaScript句柄对象生成的,因而JavaScript原生对象与Java对象实际上通过JavaScript句柄对象即建立了绑定关系,且JavaScript层的JavaScript原生对象都对应一个Java对象提供服务。为了保证JavaScript原生对象与Java对象能够一一对应,当Java层通过同一JavaScript功能接口多次向JavaScript层返回JavaScript句柄对象时,Java实际上返回的是同一JavaScript句柄对象;当JavaScript层多次对同一JavaScript句柄对象进行包装时,JavaScript层实际上生成的是同一JavaScript原生对象。
在步骤S205中,在JavaScript原生对象的应用场景下,JavaScript层通过JavaScript功能接口向Java层发送调用消息。
当因业务需求,为了实现快应用中的某种功能,JavaScript层需要调用JavaScript原生对象的功能,或者JavaScript层需要将JavaScript原生对象作为其他JavaScript功能接口调用的参数时,JavaScript层可将该JavaScript原生对象对应的JavaScript接口对象作为调用参数,并通过JavaScript功能接口向Java层发送包括JavaScript接口对象的调用消息,以实现对相应Java对象的调用。在该过程中,由于JavaScript原生对象是JavaScript层根据Java层返回的JavaScript原生对象包装得到,因而在调用JavaScript原生对象的方法时,需要传入instId,并通过invoke机制完成,以说明在哪个JavaScript功能接口上执行调用。另外为了减少数据传输量,JavaScript层向Java层发送的调用消息可以不包括JavaScript接口对象,而是包括JavaScript接口对象ID。
在步骤S206中,当接收到调用消息时,Java层获取JavaScript句柄对象对应的Java对象,以实现相应功能。
在本公开实施例中,对象接口管理器中存储有JavaScript句柄对象与Java对象之间的对应关系,当接收到调用消息时,Java层能够根据对象接口管理器中所存储的对应关系,获取JavaScript句柄对象对应的Java对象。由于每个JavaScript功能接口用于指示不同的功能,无法直接实现具体的功能,而Java层调用JavaScript功能接口在Java层创建的Java对象,用于具体实现这些功能。因此,当接收到调用消息,Java层采用Java对象,即可实现JavaScript功能接口所指示的功能。例如,如果JavaScript功能接口所指示的功能为建立长连接,则当接收到调用消息时,Java层采用相应的Java对象,以实现长连接功能。
对于上述数据交互过程,下面以JavaScript功能接口为websocket接口为例进行说明。
JavaScript调用websocketfactory.create接口在Java层创建一个Java端的websocket对象,Java层将websocket对象转换为JavaScript句柄对象,并将JavaScript句柄对象发送至JavaScript层,JavaScript层根据JavaScript句柄对象,生成JavaScript端的websocket对象,该websocket对象为一个长连接通道,例如,在聊天场景下,两台设备通过websocket建立一个连接,在Java层就会有一个websocket对象做实现,JavaScript层调用websocket.send发送数据接口发送数据到Java层,Java层从对象接口管理器中获取其对应的websocket对象,并通过该websocket对象建立长连接。
本公开实施例提供的方法,Java层将Java对象转换为JavaScript句柄对象发送至JavaScript层,并在JavaScript层生成与Java对象对应的JavaScript原生对象,在JavaScript原生对象的应用场景下,JavaScript层以JavaScript句柄对象作为桥梁,调用Java层中的Java对象执行操作,该方法在JavaScript层和Java层之间实现了Java对象的传递,丰富了数据交互形式,从而为快应用中更多功能的实现提供了可能。
图3是根据一示例性实施例示出的一种数据交互装置示意图。参照图3,该装置包括:对象创建模块301、对象转换模块302、对象生成模块303、发送模块304及获取模块305。
对象创建模块301被配置为调用JavaScript功能接口在Java层302创建Java对象;
对象转换模块302被配置为将Java对象转换为JavaScript句柄对象,并通过JavaScript功能接口将JavaScript句柄对象发送至JavaScript层301;
对象生成模块303被配置为根据JavaScript句柄对象,生成JavaScript原生对象;
发送模块304被配置为在JavaScript原生对象的应用场景下,通过JavaScript功能接口向Java层302发送调用消息,调用消息包括JavaScript句柄对象;
获取模块305被配置为当接收到调用消息时,获取JavaScript句柄对象对应的Java对象,以实现相应功能。
在本公开的另一个实施例中,对象创建模块301被配置为通过调用JavaScript功能接口的构造函数在Java层创建Java对象。
在本公开的另一个实施例中,对象创建模块301被配置为通过调用JavaScript功能接口的普通方法在Java层创建Java对象。
在本公开的另一个实施例中,对象转换模块302被配置为采用接口对象管理器将Java对象转换为JavaScript句柄对象,接口对象管理器用于将Java对象转换为JavaScript句柄对象。
在本公开的另一个实施例中,该装置包括:更改模块。
更改模块被配置为更改向JavaScript层返回值的Map,以使Java层能够通过JavaScript功能接口将JavaScript句柄对象发送至JavaScript层。
在本公开的另一个实施例中,JavaScript句柄对象包括Java对象对应的JavaScript原生对象属性;
对象生成模块303被配置为根据JavaScript原生类型属性,生成JavaScript原生对象。
在本公开的另一个实施例中,该装置还包括:存储模块和获取模块。
存储模块被配置为存储Java对象与JavaScript句柄对象之间的对应关系;
获取模块305被配置为根据对象接口管理器中所存储的对应关系,获取JavaScript句柄对象对应的Java对象,并根据Java对象以实现相应功能。
需要说明的是,本公开实施例中的对象创建模块301、对象生成模块303、发送模块304可设置于JavaScript层中,用于实现JavaScript层与Java层之间的数据交互;本公开实施例中的对象转换模块302、获取模块305、更改模块及存储模块可设置于Java层,用于实现Java层与JavaScript层之间的数据交互。
本公开实施例提供的装置,Java层将Java对象转换为JavaScript句柄对象发送至JavaScript层,并在JavaScript层生成与Java对象对应的JavaScript原生对象,在JavaScript原生对象的应用场景下,JavaScript层以JavaScript句柄对象作为桥梁,调用Java层中的Java对象执行操作,该方法在JavaScript层和Java层之间实现了Java对象的传递,丰富了数据交互形式,从而为快应用中更多功能的实现提供了可能。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图4是根据一示例性实施例示出的一种用于数据交互的装置400的框图。例如,装置400可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图4,装置400可以包括以下一个或多个组件:处理组件402,存储器404,电源组件406,多媒体组件408,音频组件410,输入/输出(I/O)接口412,传感器组件414,以及通信组件416。
处理组件402通常控制装置400的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件402可以包括一个或多个处理器420来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件402可以包括一个或多个模块,便于处理组件402和其他组件之间的交互。例如,处理组件402可以包括多媒体模块,以方便多媒体组件408和处理组件402之间的交互。
存储器404被配置为存储各种类型的数据以支持在装置400的操作。这些数据的示例包括用于在装置400上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器404可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件406为装置400的各种组件提供电力。电源组件406可以包括电源管理系统,一个或多个电源,及其他与为装置400生成、管理和分配电力相关联的组件。
多媒体组件408包括在所述装置400和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件408包括一个前置摄像头和/或后置摄像头。当装置400处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件410被配置为输出和/或输入音频信号。例如,音频组件410包括一个麦克风(MIC),当装置400处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器404或经由通信组件416发送。在一些实施例中,音频组件410还包括一个扬声器,用于输出音频信号。
I/O接口412为处理组件402和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件414包括一个或多个传感器,用于为装置400提供各个方面的状态评估。例如,传感器组件414可以检测到装置400的打开/关闭状态,组件的相对定位,例如所述组件为装置400的显示器和小键盘,传感器组件414还可以检测装置400或装置400一个组件的位置改变,用户与装置400接触的存在或不存在,装置400方位或加速/减速和装置400的温度变化。传感器组件414可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件414还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件414还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件416被配置为便于装置400和其他设备之间有线或无线方式的通信。装置400可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件416经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件416还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置400可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器404,上述指令可由装置400的处理器420执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器执行时,使得移动终端能够执行一种数据交互方法。
本公开实施例提供的终端,Java层将Java对象转换为JavaScript句柄对象发送至JavaScript层,并在JavaScript层生成与Java对象对应的JavaScript原生对象,在JavaScript原生对象的应用场景下,JavaScript层以JavaScript句柄对象作为桥梁,调用Java层中的Java对象执行操作,该方法在JavaScript层和Java层之间实现了Java对象的传递,丰富了数据交互形式,从而为快应用中更多功能的实现提供了可能。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (15)

1.一种数据交互方法,其特征在于,所述方法包括:
JavaScript层调用JavaScript功能接口在Java层创建Java对象;
所述Java层将所述Java对象转换为JavaScript句柄对象,并通过所述JavaScript功能接口将所述JavaScript句柄对象发送至所述JavaScript层;
所述JavaScript层根据所述JavaScript句柄对象,生成JavaScript原生对象;
在所述JavaScript原生对象的应用场景下,所述JavaScript层通过所述JavaScript功能接口向所述Java层发送调用消息,所述调用消息包括所述JavaScript句柄对象;
当接收到所述调用消息时,所述Java层获取所述JavaScript句柄对象对应的Java对象,以实现相应功能。
2.根据权利要求1所述的方法,其特征在于,所述JavaScript层调用JavaScript功能接口在Java层创建Java对象,包括:
所述JavaScript层通过调用所述JavaScript功能接口的构造函数在所述Java层创建Java对象。
3.根据权利要求1所述的方法,其特征在于,所述JavaScript层调用JavaScript功能接口在Java层创建Java对象,包括:
所述JavaScript层通过调用所述JavaScript功能接口的普通方法在所述Java层创建Java对象。
4.根据权利要求1所述的方法,其特征在于,所述Java层将所述Java对象转换为JavaScript句柄对象,包括:
所述Java层采用接口对象管理器将所述Java对象转换为JavaScript句柄对象,所述接口对象管理器用于将Java对象转换为JavaScript句柄对象。
5.根据权利要求1所述的方法,其特征在于,所述通过所述JavaScript功能接口将所述JavaScript句柄对象发送至所述JavaScript层之前,还包括:
所述Java层更改向所述JavaScript层返回值的Map,以使所述Java层能够通过所述JavaScript功能接口将所述JavaScript句柄对象发送至所述JavaScript层。
6.根据权利要求1所述的方法,其特征在于,所述JavaScript句柄对象包括所述Java对象对应的JavaScript原生对象属性,所述JavaScript层根据所述JavaScript句柄对象,生成JavaScript原生对象,包括:
所述JavaScript层根据所述JavaScript原生类型属性,生成JavaScript原生对象。
7.根据权利要求4所述的方法,其特征在于,所述Java层采用接口对象管理器将所述Java对象转换为JavaScript句柄对象之后,还包括:
所述接口对象管理器存储所述Java对象与所述JavaScript句柄对象之间的对应关系;
所述Java层获取所述JavaScript句柄对象对应的Java对象,以实现相应功能,包括:
所述Java层根据所述对象接口管理器中所存储的对应关系,获取所述JavaScript句柄对象对应的Java对象,并根据Java对象以实现相应功能。
8.一种数据交互装置,其特征在于,所述装置包括:
对象创建模块,用于调用JavaScript功能接口在Java层创建Java对象;
对象转换模块,用于将所述Java对象转换为JavaScript句柄对象,并通过所述JavaScript功能接口将所述JavaScript句柄对象发送至所述JavaScript层;
对象生成模块,用于根据所述JavaScript句柄对象,生成JavaScript原生对象;
发送模块,用于在JavaScript原生对象的应用场景下,通过所述JavaScript功能接口向所述Java层发送调用消息,所述调用消息包括所述JavaScript句柄对象;
获取模块,用于当接收到所述调用消息时,获取所述JavaScript句柄对象对应的Java对象,以实现相应功能。
9.根据权利要求8所述的装置,其特征在于,所述对象创建模块,用于通过调用所述JavaScript功能接口的构造函数在所述Java层创建Java对象。
10.根据权利要求8所述的装置,其特征在于,所述对象创建模块,用于通过调用所述JavaScript功能接口的普通方法在所述Java层创建Java对象。
11.根据权利要求8所述的装置,其特征在于,所述对象转换模块,用于采用接口对象管理器将所述Java对象转换为JavaScript句柄对象,所述接口对象管理器用于将Java对象转换为JavaScript句柄对象。
12.根据权利要求8所述的装置,其特征在于,所述装置还包括:
更改模块,用于更改向所述JavaScript层返回值的Map,以使所述Java层能够通过所述JavaScript功能接口将所述JavaScript句柄对象发送至所述JavaScript层。
13.根据权利要求8所述的装置,其特征在于,所述JavaScript句柄对象包括所述Java对象对应的JavaScript原生对象属性;
所述对象生成模块,用于根据所述JavaScript原生类型属性,生成JavaScript原生对象。
14.根据权利要求11所述的装置,其特征在于,所述装置还包括:
存储模块,用于存储所述Java对象与所述JavaScript句柄对象之间的对应关系;
所述获取模块,用于根据所述对象接口管理器中所存储的对应关系,获取所述JavaScript句柄对象对应的Java对象,并根据Java对象以实现相应功能。
15.一种数据交互装置,其特征在于,包括:
处理器;
用于存储处理器可执行的指令的存储器;
其中,所述处理器被配置为:
JavaScript层调用JavaScript功能接口在Java层创建Java对象;
所述Java层将所述Java对象转换为JavaScript句柄对象,并通过所述JavaScript功能接口将所述JavaScript句柄对象发送至所述JavaScript层;
所述JavaScript层根据所述JavaScript句柄对象,生成JavaScript原生对象;
在所述JavaScript原生对象的应用场景下,所述JavaScript层通过所述JavaScript功能接口向所述Java层发送调用消息,所述调用消息包括所述JavaScript句柄对象;
当接收到所述调用消息时,所述Java层获取所述JavaScript句柄对象对应的Java对象,以实现相应功能。
CN201810828800.0A 2018-07-25 2018-07-25 数据交互方法及装置 Active CN109032583B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810828800.0A CN109032583B (zh) 2018-07-25 2018-07-25 数据交互方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810828800.0A CN109032583B (zh) 2018-07-25 2018-07-25 数据交互方法及装置

Publications (2)

Publication Number Publication Date
CN109032583A true CN109032583A (zh) 2018-12-18
CN109032583B CN109032583B (zh) 2022-06-17

Family

ID=64645299

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810828800.0A Active CN109032583B (zh) 2018-07-25 2018-07-25 数据交互方法及装置

Country Status (1)

Country Link
CN (1) CN109032583B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113448691A (zh) * 2021-08-30 2021-09-28 天津市天房科技发展股份有限公司 一种前端JavaScript和本地Java应用的交互方法和装置

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030074634A1 (en) * 1998-11-25 2003-04-17 Helmut Emmelmann Interactive server side components
CN101442515A (zh) * 2007-11-22 2009-05-27 深圳市科陆电子科技股份有限公司 一种基于浏览器的远程控制方法
CN101815064A (zh) * 2010-01-11 2010-08-25 北京世纪高通科技有限公司 数据交互的方法和装置
CN102012906A (zh) * 2010-10-27 2011-04-13 南京聚社数字科技有限公司 基于SaaS架构的三维场景管理平台及编辑浏览方法
US8136109B1 (en) * 2002-04-19 2012-03-13 Tibco Software Inc. Delivery of data and formatting information to allow client-side manipulation
CN105389222A (zh) * 2015-12-15 2016-03-09 中国科学院声学研究所 一种动态调用原生接口的方法、装置和系统
CN105468369A (zh) * 2015-11-19 2016-04-06 深圳联友科技有限公司 移动平台上JavaScript调用原生功能的方法以及系统
CN105743955A (zh) * 2014-12-11 2016-07-06 中国科学院声学研究所 一种扩展JavaScript对象方法
CN106469051A (zh) * 2015-08-19 2017-03-01 阿里巴巴集团控股有限公司 对象传递方法和装置
CN106843850A (zh) * 2016-12-28 2017-06-13 北京五八信息技术有限公司 一种在React Native组件之间传递native对象的方法和装置
CN106886390A (zh) * 2015-12-15 2017-06-23 大唐软件技术股份有限公司 一种Java对象生成和转换方法和Java对象生成和转换装置
CN106971111A (zh) * 2017-02-13 2017-07-21 武汉斗鱼网络科技有限公司 数据加密方法、终端及服务器

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030074634A1 (en) * 1998-11-25 2003-04-17 Helmut Emmelmann Interactive server side components
US8136109B1 (en) * 2002-04-19 2012-03-13 Tibco Software Inc. Delivery of data and formatting information to allow client-side manipulation
CN101442515A (zh) * 2007-11-22 2009-05-27 深圳市科陆电子科技股份有限公司 一种基于浏览器的远程控制方法
CN101815064A (zh) * 2010-01-11 2010-08-25 北京世纪高通科技有限公司 数据交互的方法和装置
CN102012906A (zh) * 2010-10-27 2011-04-13 南京聚社数字科技有限公司 基于SaaS架构的三维场景管理平台及编辑浏览方法
CN105743955A (zh) * 2014-12-11 2016-07-06 中国科学院声学研究所 一种扩展JavaScript对象方法
CN106469051A (zh) * 2015-08-19 2017-03-01 阿里巴巴集团控股有限公司 对象传递方法和装置
CN105468369A (zh) * 2015-11-19 2016-04-06 深圳联友科技有限公司 移动平台上JavaScript调用原生功能的方法以及系统
CN105389222A (zh) * 2015-12-15 2016-03-09 中国科学院声学研究所 一种动态调用原生接口的方法、装置和系统
CN106886390A (zh) * 2015-12-15 2017-06-23 大唐软件技术股份有限公司 一种Java对象生成和转换方法和Java对象生成和转换装置
CN106843850A (zh) * 2016-12-28 2017-06-13 北京五八信息技术有限公司 一种在React Native组件之间传递native对象的方法和装置
CN106971111A (zh) * 2017-02-13 2017-07-21 武汉斗鱼网络科技有限公司 数据加密方法、终端及服务器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
宋文瑞: "基于JavaScript技术实现的面向对象编程方法", 《数码世界》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113448691A (zh) * 2021-08-30 2021-09-28 天津市天房科技发展股份有限公司 一种前端JavaScript和本地Java应用的交互方法和装置

Also Published As

Publication number Publication date
CN109032583B (zh) 2022-06-17

Similar Documents

Publication Publication Date Title
US11385857B2 (en) Method for displaying UI component and electronic device
CN105407036B (zh) 红包发送方法和装置
CN104038536B (zh) 插件通信方法和装置
CN106126685B (zh) 页面加载方法及装置
CN108370290A (zh) 同步块的指示及确定方法、装置、基站、用户设备
WO2017045307A1 (zh) 接听扩展功能显示方法及装置
CN113497909A (zh) 一种设备交互的方法和电子设备
CN110945467B (zh) 一种免打扰方法和终端
CN108965413A (zh) 信息交互方法、装置及存储介质
CN110704030A (zh) 接口配置信息生成方法、装置、电子设备及存储介质
CN105187154B (zh) 响应包接收延时的方法及装置
CN106535194B (zh) 屏幕内容共享方法、装置及系统
CN104967966B (zh) 一种绑定蓝牙设备的方法及装置
CN109032583A (zh) 数据交互方法及装置
CN110221813A (zh) 应用的数据连接建立方法、装置、存储介质和电子设备
CN108958943A (zh) 内存释放方法及装置
CN109511118A (zh) 无线局域网访问异常处理方法、移动终端和usim卡
CN109491655A (zh) 一种输入事件处理方法及装置
CN110224991A (zh) 视联网终端通讯方法及装置
CN109309849A (zh) 多媒体内容的互动方法及装置
CN108830268A (zh) 内容获取方法、装置、终端及存储介质
CN114780268A (zh) 通知消息的显示方法及电子设备
CN107704911A (zh) 二维码的生成、读取方法及装置
CN107395724A (zh) 网络请求方法及装置
US20200410605A1 (en) Mobile, server and operating method thereof

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