一种数据交互方法、装置、存储介质及移动终端与流程

文档序号:16067563发布日期:2018-11-24 12:49阅读:144来源:国知局

本发明涉及数据处理领域,特别是涉及一种数据交互方法、装置、存储介质及移动终端。

背景技术

本方案应用于移动终端的app中,在手机的app中,动态更新及热修复已经成为潮流,而在ios平台多采用javascriptcore(运行环境)来在js和native(原生语言组件)之间进行交互,在开发过程中,避免不了的要使用多线程来解决耗时任务。

随着业务的不断增多,多线程的需求越来越大,而js是单线程的,所有的js方法只能串行执行,对应到javascriptcore里,jscontext(作用域)也是在主线程创建,实现过程如图1所示。由于jscontext是在主线程中创建的,native和js发生交互也都是在主线程中,调用js的方法也会在主线程执行,所以,在js方法(即功能函数)执行耗时操作时,主线程将会被卡住,用户将操作不了界面,用户体验较差。



技术实现要素:

本发明实施例提供一种数据交互方法、装置、存储介质及移动终端,用以解决现有技术的如下问题:现有native和js交互时,如果js方法执行耗时操作,则主线程将会被卡住,用户将操作不了界面,用户体验较差。

为解决上述技术问题,一方面,本发明实施例提供一种数据交互方法,应用于基于混合开发模式所开发的应用程序中,包括:原生语言组件通过预定多核编程方式在主线程中创建一个子线程;所述原生语言组件在所述子线程中创建一个与第一预定语言组件交互的作用域;所述原生语言组件通过所述作用域调用通过第一预定语言编写的功能函数。

可选的,在所述原生语言组件通过预定多核编程方式在主线程中创建一个子线程之前,还包括:所述原生语言组件将预定应用程序编程接口分享给所述第一预定语言组件;所述第一预定语言组件通过所述预定应用程序编程接口调用所述原生语言组件的逻辑。

可选的,所述原生语言组件通过所述作用域调用通过第一预定语言编写的功能函数,包括:所述原生语言组件获取待调用的功能函数的索引,其中,所述功能函数为:在所述混合开发模式下,通过第一预定语言编写的非原生功能函数;所述原生语言组件根据所述功能函数的索引通过所述作用域调用所述功能函数的索引对应的功能函数。

可选的,所述预定多核编程方式为核心中央调度(gcd,grandcentraldispatch)。

另一方面,本发明实施例还提供一种数据交互装置,设置在基于混合开发模式所开发的应用程序中,包括:第一创建模块,用于使用原生语言组件通过预定多核编程方式在主线程中创建一个子线程;第二创建模块,用于使用所述原生语言组件在所述子线程中创建一个与第一预定语言组件交互的作用域;第一调用模块,用于使用所述原生语言组件通过所述作用域调用通过第一预定语言编写的功能函数。

可选的,还包括:分享模块,用于使用所述原生语言组件将预定应用程序编程接口分享给所述第一预定语言组件;第二调用模块,用于使用所述第一预定语言组件通过所述预定应用程序编程接口调用所述原生语言组件的逻辑。

可选的,所述第一调用模块具体用于:使用所述原生语言组件获取待调用的功能函数的索引,根据所述功能函数的索引通过所述作用域调用所述功能函数的索引对应的功能函数,其中,所述功能函数为:在所述混合开发模式下,通过第一预定语言编写的非原生功能函数。

可选的,所述预定多核编程方式为gcd。

另一方面,本发明实施例还提供一种存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述数据交互方法的步骤。

另一方面,本发明实施例还提供一种移动终端,至少包括存储器、处理器,所述存储器上存储有计算机程序,所述处理器在执行所述存储器上的计算机程序时实现上述数据交互方法的步骤。

本发明实施例原生语言组件先在主线程创建一个子线程,并在创建该子线程后再创建与第一预定语言组件交互的作用域,进而通过该作用域来进行交互操作。该方法与现有技术的构建机制不同,所以可以让js的方法在子线程运行,不会对主线程造成影响,不影响用户操作,用户体验较好,解决了现有技术的如下问题:现有native和js交互时,如果js方法执行耗时操作,则主线程将会被卡住,用户将操作不了界面,用户体验较差。

附图说明

图1是现有技术数据调用示意图;

图2是本发明第一实施例中数据交互方法的流程图;

图3是本发明第二实施例中数据交互方法的流程图;

图4是本发明第三实施例中数据交互装置的结构示意图;

图5是本发明第四实施例中数据交互装置的结构示意图;

图6是本发明第五实施例中存储介质内程序的实现过程示意图。

具体实施方式

为了解决现有技术的如下问题:现有native和js交互时,如果js方法执行耗时操作,则主线程将会被卡住,用户将操作不了界面,用户体验较差;本发明提供了一种数据交互方法、装置、存储介质及移动终端,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。

本发明第一实施例提供了一种数据交互方法,应用于基于混合开发模式所开发的应用程序中,该方法的流程如图2所示,包括步骤s201至s203:

s201,原生语言组件通过预定多核编程方式在主线程中创建一个子线程。实现时,上述的预定多核编程方式通常采用gcd,本领域技术人员可以根据实际需求使用gcd。

s202,原生语言组件在子线程中创建一个与第一预定语言组件交互的作用域。

实现时,本发明实施例是先在主线程创建一个子线程,随后才在该子线程中创建作用域,该过程由于是由原生语言组件创建子线程后才创建作用域,因此,作用域是在该子线程下的,后续使用该作用域交互也是在该子线程下进行的。

s203,原生语言组件通过作用域调用通过第一预定语言编写的功能函数。

具体实现的过程中,先使用原生语言组件获取待调用的功能函数的索引,其中,功能函数为通过第一预定语言编写的;随后,原生语言组件根据功能函数的索引通过作用域调用功能函数的索引对应的功能函数。

本发明实施例原生语言组件先在主线程创建一个子线程,并在创建该子线程后再创建与第一预定语言组件交互的作用域,进而通过该作用域来进行交互操作。该方法与现有技术的构建机制不同,所以可以让js的方法在子线程运行,不会对主线程造成影响,不影响用户操作,用户体验较好,解决了现有技术的如下问题:现有native和js交互时,如果js方法执行耗时操作,则主线程将会被卡住,用户将操作不了界面,用户体验较差。

本发明第二实施例提供了一种数据交互方法,应用于基于混合开发模式所开发的应用程序中,该方法的流程如图3所示,包括步骤s301至s305:

s301,原生语言组件将预定应用程序编程接口分享给第一预定语言组件。

s302,第一预定语言组件通过预定应用程序编程接口调用原生语言组件的逻辑。

s303,原生语言组件通过预定多核编程方式在主线程中创建一个子线程。实现时,上述的预定多核编程方式通常采用gcd,本领域技术人员可以根据实际需求使用gcd。

s304,原生语言组件在子线程中创建一个与第一预定语言组件交互的作用域。

实现时,本发明实施例是先在主线程创建一个子线程,随后才在该子线程中创建作用域,该过程由于是由原生语言组件创建子线程后才创建作用域,因此,作用域是在该子线程下的,后续使用该作用域交互也是在该子线程下进行的。

s305,原生语言组件通过作用域调用通过第一预定语言编写的功能函数。

具体实现的过程中,先使用原生语言组件获取待调用的功能函数的索引,其中,功能函数为通过第一预定语言编写的;随后,原生语言组件根据功能函数的索引通过作用域调用功能函数的索引对应的功能函数。

本发明实施例原生语言组件先在主线程创建一个子线程,并在创建该子线程后再创建与第一预定语言组件交互的作用域,进而通过该作用域来进行交互操作。该方法与现有技术的构建机制不同,所以可以让js的方法在子线程运行,不会对主线程造成影响,不影响用户操作,用户体验较好,解决了现有技术的如下问题:现有native和js交互时,如果js方法执行耗时操作,则主线程将会被卡住,用户将操作不了界面,用户体验较差。

本发明第三实施例提供了一种数据交互装置,设置在基于混合开发模式所开发的应用程序中,该装置的结构示意如图4所示,包括:

第一创建模块10,用于使用原生语言组件通过预定多核编程方式在主线程中创建一个子线程;第二创建模块20,与第一创建模块10耦合,用于使用原生语言组件在子线程中创建一个与第一预定语言组件交互的作用域;第一调用模块30,与第二创建模块20耦合,用于使用原生语言组件通过作用域调用通过第一预定语言编写的功能函数。

实现时,本发明实施例第一创建模块10是先在主线程创建一个子线程,随后第二创建模块20才在该子线程中创建作用域,该过程由于是由原生语言组件创建子线程后才创建作用域,因此,作用域是在该子线程下的,后续使用该作用域交互也是在该子线程下进行的。

具体实现过程中,第一调用模块具体用于使用原生语言组件获取待调用的功能函数的索引,根据功能函数的索引通过作用域调用功能函数的索引对应的功能函数,其中,功能函数为:在混合开发模式下,通过第一预定语言编写的非原生功能函数。

本发明实施例原生语言组件先在主线程创建一个子线程,并在创建该子线程后再创建与第一预定语言组件交互的作用域,进而通过该作用域来进行交互操作。该方法与现有技术的构建机制不同,所以可以让js的方法在子线程运行,不会对主线程造成影响,不影响用户操作,用户体验较好,解决了现有技术的如下问题:现有native和js交互时,如果js方法执行耗时操作,则主线程将会被卡住,用户将操作不了界面,用户体验较差。

本发明第四实施例提供了一种数据交互装置,设置在基于混合开发模式所开发的应用程序中,该装置的结构示意如图5所示,包括:

分享模块40,用于使用原生语言组件将预定应用程序编程接口分享给第一预定语言组件;第二调用模块50,与分享模块40耦合,用于使用第一预定语言组件通过预定应用程序编程接口调用原生语言组件的逻辑;第一创建模块10,与第二调用模块50耦合,用于使用原生语言组件通过预定多核编程方式在主线程中创建一个子线程;第二创建模块20,与第一创建模块10耦合,用于使用原生语言组件在子线程中创建一个与第一预定语言组件交互的作用域;第一调用模块30,与第二创建模块20耦合,用于使用原生语言组件通过作用域调用通过第一预定语言编写的功能函数。

实现时,本发明实施例第一创建模块10是先在主线程创建一个子线程,随后第二创建模块20才在该子线程中创建作用域,该过程由于是由原生语言组件创建子线程后才创建作用域,因此,作用域是在该子线程下的,后续使用该作用域交互也是在该子线程下进行的。

具体实现过程中,第一调用模块具体用于使用原生语言组件获取待调用的功能函数的索引,根据功能函数的索引通过作用域调用功能函数的索引对应的功能函数,其中,功能函数为:在混合开发模式下,通过第一预定语言编写的非原生功能函数。

本发明实施例原生语言组件先在主线程创建一个子线程,并在创建该子线程后再创建与第一预定语言组件交互的作用域,进而通过该作用域来进行交互操作。该方法与现有技术的构建机制不同,所以可以让js的方法在子线程运行,不会对主线程造成影响,不影响用户操作,用户体验较好,解决了现有技术的如下问题:现有native和js交互时,如果js方法执行耗时操作,则主线程将会被卡住,用户将操作不了界面,用户体验较差。

本发明第五实施例提供了一种存储介质,存储有计算机程序,计算机程序被处理器执行时实现如下步骤s11至s13:

s11,原生语言组件通过预定多核编程方式在主线程中创建一个子线程。

本领域技术人员在编程时,上述的预定多核编程方式通常采用gcd实现。

s12,原生语言组件在子线程中创建一个与第一预定语言组件交互的作用域。

程序设定时,本发明实施例是先在主线程创建一个子线程,随后才在该子线程中创建作用域,该过程由于是由原生语言组件创建子线程后才创建作用域,因此,作用域是在该子线程下的,后续使用该作用域交互也是在该子线程下进行的。

s13,原生语言组件通过作用域调用通过第一预定语言编写的功能函数。

在计算机程序被处理器执行原生语言组件通过预定多核编程方式在主线程中创建一个子线程之前,还实现如下步骤:原生语言组件将预定应用程序编程接口分享给第一预定语言组件;第一预定语言组件通过预定应用程序编程接口调用原生语言组件的逻辑。

具体实现s13程序时,按照如下步骤进行编程:先使用原生语言组件获取待调用的功能函数的索引,其中,功能函数为通过第一预定语言编写的;随后,原生语言组件根据功能函数的索引通过作用域调用功能函数的索引对应的功能函数。

下面结合具体实例对上述存储介质存储的程序进行说明,但并不对本发明实施例构成限定。

本实施例存储介质存储的程序用于解决js的方法真正在子线程执行的问题,不对主线程造成卡屏,该程序的实现过程如图6所示,包括:

1、native在主线程创建jscontext。

2、native给js提供一个api接口。

3、js调用native提供的api接口,并使用gcd开一个子线程。

4、native在新开的子线程中,创建一个jscontext,在该jscontext中拿到js的方法,然后执行,这样js的执行就会在另一个线程。

本发明实施例js的方法可以在子线程中执行,因此不会对主界面造成卡顿。

上述存储介质可以设置在移动终端中,作为移动终端的存储器部分或全部,本领域技术人员可以根据实际情况进行设置。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行上述实施例记载的方法步骤。可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。

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