CN111104183B - 应用程序运行方法、装置、电子设备及存储介质 - Google Patents
应用程序运行方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111104183B CN111104183B CN201911304709.XA CN201911304709A CN111104183B CN 111104183 B CN111104183 B CN 111104183B CN 201911304709 A CN201911304709 A CN 201911304709A CN 111104183 B CN111104183 B CN 111104183B
- Authority
- CN
- China
- Prior art keywords
- target
- application program
- service
- running
- code
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 88
- 230000008569 process Effects 0.000 claims abstract description 31
- 230000006870 function Effects 0.000 claims description 13
- 230000001960 triggered effect Effects 0.000 claims description 13
- 238000009877 rendering Methods 0.000 description 17
- 238000012545 processing Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 10
- 238000011161 development Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000003993 interaction Effects 0.000 description 8
- 238000007726 management method Methods 0.000 description 6
- 230000001133 acceleration Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 4
- 230000010354 integration Effects 0.000 description 4
- 230000005236 sound signal Effects 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 244000035744 Hura crepitans Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003071 parasitic effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/79—Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories
- A63F13/792—Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories for payment purposes, e.g. monthly subscriptions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- General Business, Economics & Management (AREA)
- Stored Programmes (AREA)
Abstract
本公开是关于一种应用程序运行方法、装置、电子设备及存储介质,属于计算机技术领域。包括:在运行第一目标应用程序时,在第一目标线程中运行第一目标应用程序的第一代码;在第一目标线程中运行第一代码的过程中,当接收到调用第一目标应用程序的目标服务的服务调用指令时,根据服务调用指令,调用第二目标线程,将目标服务的第二代码运行在第二线程中。通过将第一目标应用程序的第一代码和第一目标应用程序的目标服务的第二代码分别运行在不同目标线程中,从而使第一应用程序的运行不受目标服务的影响,进而提高了第一目标应用程序运行的流畅性,防止了第一目标应用程序在运行时出现卡顿的情况,从而提高了用户体验。
Description
技术领域
本公开是关于计算机技术领域,具体来说是关于一种应用程序运行方法、装置、电子设备及存储介质。
背景技术
随着计算机技术的发展,电子设备上可以运行多种应用程序。并且,这些应用程序可以调用多种服务,来满足用户的需求。其中,这些服务可以为该应用程序本身的服务,也可以为其他应用程序可以提供的服务。
例如,在运行游戏应用时,可以调用登陆服务实现将用户的游戏账号登录到当前的游戏应用中,或者,可以调用支付服务实现对游戏应用中登录的账号进行充值,来提高用户体验。
发明内容
本公开提供一种应用程序运行方法、装置、电子设备及存储介质,能够克服相关技术中的问题,所述技术方案如下:
一方面,提供了一种应用程序运行方法,所述方法包括:
在运行第一目标应用程序时,在第一目标线程中运行所述第一目标应用程序的第一代码;
在所述第一目标线程中运行所述第一代码的过程中,当接收到调用所述第一目标应用程序的目标服务的服务调用指令时,根据所述服务调用指令,调用用于运行所述目标服务的第二代码的第二目标线程,所述第二目标线程与所述第一目标线程不同;
在所述第二目标线程中运行所述第二代码。
在一种可能的实现方式中,所述根据所述服务调用指令,调用用于运行所述目标服务的第二代码的第二目标线程,包括:
根据所述服务调用指令,确定被调用的所述目标服务;
确定所述目标服务对应的第二代码所在的第二目标线程;
向所述第二目标线程发送调用请求,所述调用请求用于请求启动所述第二目标线程。
在另一种可能的实现方式中,所述方法包括:
当接收到所述第一目标应用程序的启动操作时,获取所述目标服务的第二代码;
确定所述第二目标线程;
将所述第二代码加载到所述第二目标线程中。
在另一种可能的实现方式中,所述获取所述目标服务的第二代码,包括:
通过所述第一目标应用程序的API,加载所述第一目标应用程序的目标服务的第二运行文件;
解析所述第二运行文件,得到所述目标服务的第二代码。
在另一种可能的实现方式中,所述通过所述第一目标应用程序的API,加载所述第一目标应用程序的目标服务的第二运行文件,包括:
通过所述API,从所述第一目标应用程序的第一服务器中加载所述目标服务的第二运行文件;或者,
通过所述API,从所述目标服务的第二服务器中加载所述目标服务的第二运行文件。
在另一种可能的实现方式中,所述通过所述API,从所述第一目标应用程序的第一服务器中加载所述目标服务的第二运行文件,包括:
通过所述API,从所述第一服务器中加载所述第一目标应用程序的第三运行文件,所述第三运行文件中包括所述第一目标应用程序的至少一个目标服务的运行文件;
从所述第三运行文件中获取所述目标服务的第二运行文件。
在另一种可能的实现方式中,所述方法还包括:
当接收到所述第一目标应用程序的启动操作时,获取所述第一目标应用程序的第一代码;
确定所述第一目标线程;
将所述第一代码加载到所述第一目标线程中。
在另一种可能的实现方式中,所述获取所述第一目标应用程序的第一代码,包括:
通过所述第一目标应用程序的应用程序编程接口API,从所述第一目标应用程序的第一服务器中加载所述第一目标应用程序的第一运行文件;
解析所述第一运行文件,得到所述第一目标应用程序的第一代码。
在另一种可能的实现方式中,所述方法还包括:
显示所述第一目标应用程序的应用界面,所述应用界面中包括至少一个服务按钮;
当目标服务按钮被触发时,确定接收到调用所述目标服务的服务调用指令。
在另一种可能的实现方式中,所述方法还包括:
调用本地已安装的第二目标应用程序,所述第二目标应用程序中包括本地未安装的所述第一目标应用程序的应用接口;
通过所述第一目标应用程序的应用接口,在本地运行所述第一目标应用程序。
另一方面,提供了一种应用程序运行装置,所述装置包括:
第一运行模块,被配置为在运行第一目标应用程序时,在第一目标线程中运行所述第一目标应用程序的第一代码;
第一调用模块,被配置为在所述第一目标线程中运行所述第一代码的过程中,当接收到调用所述第一目标应用程序的目标服务的服务调用指令时,根据所述服务调用指令,调用用于运行所述目标服务的第二代码的第二目标线程,所述第二目标线程与所述第一目标线程不同;
第二运行模块,被配置为在所述第二目标线程中运行所述第二代码。
在一种可能的实现方式中,所述第一调用模块,还被配置为根据所述服务调用指令,确定被调用的所述目标服务;确定所述目标服务对应的第二代码所在的第二目标线程;向所述第二目标线程发送调用请求,所述调用请求用于请求启动所述第二目标线程。
在另一种可能的实现方式中,所述装置包括:
第一获取模块,被配置为当接收到所述第一目标应用程序的启动操作时,获取所述目标服务的第二代码;
第一确定模块,被配置为确定所述第二目标线程;
第一加载模块,被配置为将所述第二代码加载到所述第二目标线程中。
在另一种可能的实现方式中,所述第一获取模块,还被配置为通过所述第一目标应用程序的API,加载所述第一目标应用程序的目标服务的第二运行文件;解析所述第二运行文件,得到所述目标服务的第二代码。
在另一种可能的实现方式中,所述第一获取模块,还被配置为通过所述API,从所述第一目标应用程序的第一服务器中加载所述目标服务的第二运行文件;或者,通过所述API,从所述目标服务的第二服务器中加载所述目标服务的第二运行文件。
在另一种可能的实现方式中,所述第一获取模块,还被配置为通过所述API,从所述第一服务器中加载所述第一目标应用程序的第三运行文件,所述第三运行文件中包括所述第一目标应用程序的至少一个目标服务的运行文件;从所述第三运行文件中获取所述目标服务的第二运行文件。
在另一种可能的实现方式中,所述装置还包括:
第二获取模块,被配置为当接收到所述第一目标应用程序的启动操作时,获取所述第一目标应用程序的第一代码;
第二确定模块,被配置为确定所述第一目标线程;
第二加载模块,被配置为将所述第一代码加载到所述第一目标线程中。
在另一种可能的实现方式中,所述第二获取模块,还被配置为通过所述第一目标应用程序的应用程序编程接口API,从所述第一目标应用程序的第一服务器中加载所述第一目标应用程序的第一运行文件;解析所述第一运行文件,得到所述第一目标应用程序的第一代码。
在另一种可能的实现方式中,所述装置还包括:
显示模块,被配置为显示所述第一目标应用程序的应用界面,所述应用界面中包括至少一个服务按钮;
第三确定模块,被配置为当目标服务按钮被触发时,确定接收到调用所述目标服务的服务调用指令。
在另一种可能的实现方式中,所述装置还包括:
第二调用模块,被配置为调用本地已安装的第二目标应用程序,所述第二目标应用程序中包括本地未安装的所述第一目标应用程序的应用接口;
第三运行模块,被配置为通过所述第一目标应用程序的应用接口,在本地运行所述第一目标应用程序。
另一方面,提供了一种电子设备,所述电子设备包括:
一个或多个处理器;
用于存储所述一个或多个处理器可执行指令的易失性或非易失性存储器;
其中,所述一个或多个处理器被配置为:
在运行第一目标应用程序时,在第一目标线程中运行所述第一目标应用程序的第一代码;
在所述第一目标线程中运行所述第一代码的过程中,当接收到调用所述第一目标应用程序的目标服务的服务调用指令时,根据所述服务调用指令,调用用于运行所述目标服务的第二代码的第二目标线程,所述第二目标线程与所述第一目标线程不同;
在所述第二目标线程中运行所述第二代码。
另一方面,提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如本公开实施例中,方法实施例所述的应用程序运行方法。
本公开实施例提供的技术方案带来的有益效果至少包括:
在本公开实施例中,通过在运行第一目标应用程序时,在第一目标线程中运行第一目标应用程序的第一代码;在该第一目标线程中运行该第一代码的过程中,当接收到调用该第一目标应用程序的目标服务的服务调用指令时,根据该服务调用指令,调用与第一目标线程不同的第二目标线程,在第二线程中运行第二代码。通过将第一目标应用程序的第一代码和该第一目标应用程序的目标服务的第二代码分别运行在不同目标线程中,使得第一目标应用程序可以在获取目标服务的同时,继续运行该第一目标应用程序的第一代码,从而使第一应用程序的运行不受目标服务的影响,进而提高了第一目标应用程序运行的流畅性,防止了第一目标应用程序在运行时出现卡顿的情况,从而提高了用户体验。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种应用程序运行所涉及的系统架构的示意图;
图2是根据一示例性实施例示出的一种应用程序运行方法的流程图;
图3是根据一示例性实施例示出的一种应用程序运行方法的流程图;
图4是根据一示例性实施例示出的一种应用程序运行方法的流程图;
图5是根据一示例性实施例示出的一种目标线程运行第一代码和第二代码的流程图;
图6是根据一示例性实施例示出的一种快应用框架的框图;
图7是根据一示例性实施例示出的一种快应用的启动流程图;
图8是根据一示例性实施例示出的一种应用程序运行装置的框图;
图9是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
为使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开实施方式作进一步地详细描述。
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本公开的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
快应用:是一种新型应用程序,能够基于操作系统提供的原生API(ApplicationProgramming Interface,应用程序编程接口)运行。快应用采用统一的标准进行开发,原生渲染,同时具备HTML5(Hyper Text Markup Language,超文本标记语言第5代)界面和原生应用的双重优点。快应用的框架可以深度集成于操作系统中,能够在操作系统层面进行操作,实现与其他应用服务之间的无缝衔接。开发者可以做到一次性开发即可在不同类型的设备上运行,并且无需用户进行下载和安装即可使用,即点即用。
由于快应用的特殊性,快应用被期待完成更多的任务,实现更多的功能。目前,快应用的功能正在逐步完善中,本公开实施例就是提供了一种优化快应用的运行流畅度的应用程序运行方法,利用该应用程序运行方法,使快应用运行更加流畅,从而提高用户体验。
图1是根据一示例性实施例示出的一种应用程序运行方法所涉及的系统架构的示意图。该系统架构包括:电子设备101和第一服务器102。其中,该电子设备101和第一服务器102之间可以通过网络链接或数据接口进行数据交互。
电子设备101可以为手机、电脑、智能电视、可穿戴设备、平板电脑或其他电子设备101。电子设备101中可以安装第二目标应用程序,该第二目标应用程序上设置第一目标应用程序的应用接口,第二目标应用程序可以根据该应用接口与第一服务器102进行数据传输,其中,第一服务器102可以为该第一目标应用程序的后台服务器,电子设备101可以通过该第二目标应用程序实现数据传输、应用程序的画面渲染等功能。
第二目标应用程序可以为电子设备101的操作系统中预置的应用程序,也可以为第三应用提供的应用程序。例如,第二目标应用程序可以为应用下载中心或者快应用中心等应用程序。第二目标应用程序中可以提供第一目标应用程序的应用接口。电子设备101可以通过该第一目标应用程序的应用接口,快速进入第一目标应用程序的应用界面。第一目标应用程序可以为电子设备101中未安装的任一应用程序。第一目标应用程序可以为快应用。例如,第一目标应用程序可以为游戏快应用、购物快应用、音乐快应用、外卖快应用、视频快应用、社交快应用或者浏览器快应用等为用户提供任一服务的快应用。
该第一服务器102中可以存储第一目标应用程序的第一运行文件,设置该第一目标应用程序的应用接口。当电子设备101通过第二目标应用程序中第一目标应用程序的应用接口进入第一目标应用程序的应用界面时,电子设备101通过该第二目标应用程序,从该第一服务器102中加载该第一目标应用程序的第一运行文件,获取该第一运行文件中的第一代码,将该第一代码加载到第一目标线程中,通过第一目标线程运行该第一代码。
该系统架构还包括第三服务器,该第三服务器为第二目标应用程序的后台服务器。当电子设备101通过第二目标应用程序中第一目标应用程序的应用接口进入第一目标应用程序的应用界面时,电子设备101还可以通过该第二目标应用程序,从该第三服务器中加载该第一目标应用程序的第一运行文件。相应的,第三服务器中可以事先存储第一目标应用程序的第一运行文件,第三服务器也可以在接收到第一目标应用程序的启动指令时,从第一服务器102中获取该第一目标应用程序的第一运行文件。其中,在本实现方式中,电子设备101和第三服务器之间可以通过网络链接或数据接口进行数据交互,第一服务器102和第三服务器之间也可以通过网络链接或数据接口进行数据交互。另外,电子设备101和第一服务器102之间可以通过网络链接或数据接口进行数据交互,电子设备101和第一服务器102之间也可以不建立连接。
另外,电子设备101可以通过该第一目标应用程序的第一应用界面接收服务调用指令,根据该服务调用指令调用第二代码,该第二代码为该第一目标应用程序的目标服务对应的代码。该目标服务可以为登录服务、支付服务或拍摄服务等。其中,在一种可能的实现方式中,该第二代码可以为第一服务器102中的代码。在另一种可能的实现方式中,该第二代码可以为该第一服务器102从第三服务器中获取的代码。在另一种可能的实现方式中,该系统框架还包括第二服务器,该第二服务器为提供该目标服务的服务器,相应的,该第二代码可以为该第一服务器102从第二服务器中获取的代码。
图2是根据本公开实施例示出的一种应用程序运行方法的流程图,参见图2,该方法包括以下步骤:
在步骤S201中,在运行第一目标应用程序时,在第一目标线程中运行该第一目标应用程序的第一代码。
在步骤S202中,在该第一目标线程中运行该第一代码的过程中,当接收到调用该第一目标应用程序的目标服务的服务调用指令时,根据该服务调用指令,调用用于运行该目标服务的第二代码的第二目标线程,该第二目标线程与该第一目标线程不同。
在步骤S203中,在该第二目标线程中运行该第二代码。
在一种可能的实现方式中,该根据该服务调用指令,调用用于运行该目标服务的第二代码的第二目标线程,包括:
根据该服务调用指令,确定被调用的该目标服务;
确定该目标服务对应的第二代码所在的第二目标线程;
向该第二目标线程发送调用请求,该调用请求用于请求启动该第二目标线程。
在另一种可能的实现方式中,该方法包括:
当接收到该第一目标应用程序的启动操作时,获取该目标服务的第二代码;
确定该第二目标线程;
将该第二代码加载到该第二目标线程中。
在另一种可能的实现方式中,该获取该目标服务的第二代码,包括:
通过该第一目标应用程序的API,加载该第一目标应用程序的目标服务的第二运行文件;
解析该第二运行文件,得到该目标服务的第二代码。
在另一种可能的实现方式中,该通过该第一目标应用程序的API,加载该第一目标应用程序的目标服务的第二运行文件,包括:
通过该API,从该第一目标应用程序的第一服务器中加载该目标服务的第二运行文件;或者,
通过该API,从该目标服务的第二服务器中加载该目标服务的第二运行文件。
在另一种可能的实现方式中,该通过该API,从该第一目标应用程序的第一服务器中加载该目标服务的第二运行文件,包括:
通过该API,从该第一服务器中加载该第一目标应用程序的第三运行文件,该第三运行文件中包括该第一目标应用程序的至少一个目标服务的运行文件;
从该第三运行文件中获取该目标服务的第二运行文件。
在另一种可能的实现方式中,该方法还包括:
当接收到该第一目标应用程序的启动操作时,获取该第一目标应用程序的第一代码;
确定该第一目标线程;
将该第一代码加载到该第一目标线程中。
在另一种可能的实现方式中,该获取该第一目标应用程序的第一代码,包括:
通过该第一目标应用程序的应用程序编程接口API,从该第一目标应用程序的第一服务器中加载该第一目标应用程序的第一运行文件;
解析该第一运行文件,得到该第一目标应用程序的第一代码。
在另一种可能的实现方式中,该方法还包括:
显示该第一目标应用程序的应用界面,该应用界面中包括至少一个服务按钮;
当目标服务按钮被触发时,确定接收到调用该目标服务的服务调用指令。
在另一种可能的实现方式中,该方法还包括:
调用本地已安装的第二目标应用程序,该第二目标应用程序中包括本地未安装的该第一目标应用程序的应用接口;
通过该第一目标应用程序的应用接口,在本地运行该第一目标应用程序。
在本公开实施例中,通过在运行第一目标应用程序时,在第一目标线程中运行第一目标应用程序的第一代码;在该第一目标线程中运行该第一代码的过程中,当接收到调用该第一目标应用程序的目标服务的服务调用指令时,根据该服务调用指令,调用与第一目标线程不同的第二目标线程,在第二线程中运行第二代码。通过将第一目标应用程序的第一代码和该第一目标应用程序的目标服务的第二代码分别运行在不同目标线程中,使得第一目标应用程序可以在获取目标服务的同时,继续运行该第一目标应用程序的第一代码,从而使第一应用程序的运行不受目标服务的影响,进而提高了第一目标应用程序运行的流畅性,防止了第一目标应用程序在运行时出现卡顿的情况,从而提高了用户体验。
图3是根据本公开实施例示出的一种应用程序运行方法的流程图,参见图3,在本实施例中,以获取第一代码和第二代码,将第一代码和第二代码添加到目标线程中为例进行说明,该方法包括以下步骤:
在步骤S301中,当接收到第一目标应用程序的启动操作时,电子设备获取该第一目标应用程序的第一代码。
第一代码为实现该第一目标应用程序功能的代码。例如,第一目标应用程序为游戏应用,则该第一代码可以为用于渲染该应用程序的游戏画面的代码,该第一代码可以为根据任一编程语言编写的代码,例如,该第一代码可以为JS(JavaScript,一种编程语言)代码。
其中,第一目标应用程序可以为电子设备的任一快应用。电子设备可以通过已安装的第二目标应用程序启动该第一目标应用程序。相应的,电子设备通过第二目标应用程序启动该第一目标应用的过程可以通过以下步骤(1)-(2)实现:
(1)电子设备调用本地已安装的第二目标应用程序,该第二目标应用程序中包括本地未安装的该第一目标应用程序的应用接口。
其中,该第二目标应用程序为电子设备中本地安装的应用程序。该应用接口可以为API接口。当电子设备接收到对第二目标应用程序的开启操作时,启动第二目标应用程序,例如,电子设备中显示该第二目标应用程序的程序标识,当电子设备接收到对该程序标识的点击操作时,确定接收到了该第二目标应用程序的开启操作,启动该第二目标应用程序。第二目标应用程序启动时,展示该第二目标应用程序的第二应用界面。该第二应用界面中显示该第二目标应用程序中包括的本地未安装的第一目标应用程序的应用接口。
(2)电子设备通过该第一目标应用程序的应用接口,在本地运行该第一目标应用程序。
在本步骤中,电子设备接收第一目标应用程序的应用接口的触发操作,启动该触发操作对应的第一目标应用程序。当电子设备接收到第一目标应用程序的应用接口的触发操作时,调用该第二目标应用程序的第一服务器中提供的应用接口,通过该第一服务器中的应用接口,调用该第一目标应用程序的第一运行文件,解析该第一运行文件,得到第一目标应用程序的第一代码,在第一目标线程中运行该第一代码,实现在本地运行该第一目标应用程序。其中,该第一运行文件可以为该第一目标应用程序的任一可第一运行文件,例如,该第一运行文件可以为后缀名为.rpk的文件等。
在本实现方式中,电子设备通过调用本地下载的第二目标应用程序中的应用接口,调用第一目标应用程序的运行文件,通过本地的第一目标线程执行该第一目标应用程序的运行文件,从而在电子设备中执行该未下载的第一目标应用程序,使得电子设备中不需要下载第一目标应用程序的安装包,也不需要在电子设备上安装第一目标应用程序,即可运行该第一目标应用程序,节省了电子设备的本地存储空间,且由于直接触发应用接口就能运行第一目标应用程序,从而能够提升用户的体验度。
其中,该第一代码为电子设备对第一运行文件进行解析得到的,相应的,电子设备获取第一代码的过程可以为:电子设备通过该第一目标应用程序的应用程序编程接口API,从该第一目标应用程序的第一服务器中加载该第一目标应用程序的第一运行文件;解析该第一运行文件,得到该第一目标应用程序的第一代码。
电子设备可以通过该第二目标应用程序调用该第一目标应用程的API接口。相应的,在本步骤之前,开发人员可以设计第二目标应用程序可调用的API接口,以便在本步骤中,电子设备可以为根据该第二目标应用程序调用该第一目标应用程序的API接口。
在一种可能的实现方式中,该第一服务器中可以事先存储第一目标应用程序的第一运行文件,相应的,开发人员可以事先通过该第一目标应用程序的应用接口,将第一目标应用程序的第一运行文件上传至第一服务器中。在本步骤中,电子设备启动第一目标应用程序时,可以通过第二目标应用程序从该第一服务器的应用接口处直接从第一服务器中调用该第一运行文件。其中,该第一运行文件可以为开发人员编写完成时,上传至该第一服务器中的运行文件。
在本实现方式中,开发人员事先将第一目标应用程序的第一运行文件上传至第一服务器中,当电子设备通过第二目标应用程序启动该第一目标应用程序时,电子设备可以通过第二目标应用程序的API接口直接从该第一服务器中获取该第一目标应用程序的第一运行文件,方便开发人员上传该第一运行文件,从而方便开发人员对第一运行文件进行更新调整,加快了第一目标应用程序的开发效率,并且,无需下载第一目标应用程序,简化了电子设备运行第一目标应用程序的程序,提高了第一目标应用程序的启动速度,进而提升了用户体验。
在另一种可能的实现方式中,电子设备可以通过该第二目标应用程序,调用该第二目标应用程序的第三服务器的应用接口,从该第三服务器中,获取该第一运行文件。相应的,该第一运行文件可以为开发人员编写完成时,上传至该第一目标应用程序对应的第一服务器中,再由第三服务器根据该应用接口从第一服务器中获取的运行文件。其中,第三服务器可以在本步骤之前,事先从第一服务器中获取该第一目标应用程序的第一运行文件,将该第一运行文件存储在第三服务器本地;第三服务器也可以在接收到开启该第一目标应用程序的开启指令时,从第一服务器中调用该第一运行文件。在本公开实施例中,对此不作具体限定。
在本实现方式中,电子设备从第二目标应用程序对应的第三服务器中,获取该第一目标应用程序对应的第一运行文件,将第一运行文件存储在第三服务器中,从而电子设备可以只与第三服务器建立网络连接,净化了电子设备的网络环境。
在步骤S302中,电子设备确定第一目标线程。
电子设备获取到第一代码后,将该代码加载待第一目标线程中,相应的,电子设备需要确定用于运行该第一代码的第一目标线程。其中,该第一目标线程可以为电子设备在运行第一代码时生成的第一目标线程;该第一目标线程还可以为电子设备从线程池中获取的第一目标线程。
在步骤S303中,电子设备将该第一代码加载到该第一目标线程中。
在一种可能的实现方式中,在运行该第一目标应用程序时,电子设备从线程池中选择该第一目标线程,将第一代码加载到该第一目标线程中。
在本步骤之前,电子设备可以生成多个线程,将该多个线程组成线程池。该线程池可以存储在电子设备本地,该线程池也可以存储在其他服务器中。当该线程池为本地存储的线程池时,电子设备可以从本地存储的线程池中选择第一目标线程。当该线程池为其他服务器中的线程池时,电子设备可以向其他服务器发送获取请求,其他服务器接收到该获取请求时,根据该获取请求从线程池中获取第一目标线程,将该第一目标线程发送给电子设备,电子设备接收该其他服务器发送的第一目标线程。
在本实现方式中,电子设备直接从已有的线程池中获取第一目标线程,不需要重新生成线程,节省了线程的生成时间,从而提高了第一目标应用程序的启动速度,从而提高了用户体验。
在另一种可能的实现方式中,在运行该第一目标应用程序时,电子设备生成该第一目标线程,将第一代码加载到该第一目标线程中。
在本实现方式中,电子设备根据将要运行的第一代码,生成该第一目标线程。无需实现存储多个线程,从而节省了电子设备的存储空间。
在步骤S304中,电子设备获取该目标服务的第二代码。
其中,电子设备获取该第一目标应用程序涉及的服务的第二运行文件,从该第二运行文件中解析出第二代码。由于该目标服务可以为第一目标应用程序在运行过程中产生的服务,该目标服务还可以为第一目标应用程序调用的其他应用程序实现的服务,则在本步骤中,电子设备根据该第一目标应用程序获取的第二运行文件可以为第一目标应用程序的运行文件,也可以为其他应用程序的运行文件。
在一种可能的实现方式中,该目标服务的第一运行文件可以为该第一目标应用程序的第一运行文件中的运行文件,相应的,该第一运行文件包括该第一目标应用程序运行所需要的第一代码和目标服务对应的第二运行文件。则在本步骤中,电子设备可以从已获取的第一目标应用程序的第一运行文件中提取该目标服务的第二运行文件。
在本实现方式中,目标服务为第一目标应用程序运行过程中产生的服务,该目标服务可以为第一目标应用程序携带的服务,电子设备在获取的第一目标应用程序对应的第一运行文件中包括该目标服务对应的第二运行文件,从而在本步骤中,电子设备直接从已获取的第一运行文件中提取该第二运行文件,不需要电子设备再从服务器中获取该第二运行文件,提高了获取第二运行文件的速度,从而简化了目标服务的实现过程,提高了用户体验。
在另一种可能的实现方式中,电子设备还可以在接收到目标服务的服务调用指令时,根据该服务调用指令,通过第一服务器的API,从该目标服务对应的服务器中调用该第二运行文件。第一种实现方式,该目标服务可以为第一目标应用程序在运行过程中产生的目标服务,该目标服务可以为电子设备从该第一目标应用程序对应的第三服务器中调用的第二运行文件,相应的,本步骤可以为:电子设备通过该API,从该第一目标应用程序的第一服务器中加载该目标服务的第二运行文件。例如,该目标服务为该第一目标应用程序的登录服务,则电子设备可以从该第一目标应用程序对应的第一服务器中,获取该登录服务对应的第二运行文件。
在本实现方式中,电子设备根据该第一目标应用程序的目标服务,从该第一目标应用程序的第一服务器中获取该目标服务对应的第二运行文件,使得电子设备可以根据该第二运行文件提供目标服务,而无需下载该目标服务的第二运行文件,从而节省了电子设备的存储空间。
需要说明的一点是,电子设备从第一服务器中获取该第二运行文件时,可以直接从该第一服务器中获取该目标服务对应的第二运行文件;电子设备还可以从第一服务器中获取该第一目标应用程序的至少一个目标服务的运行文件,从该至少一个目标服务的运行文件中,获取该目标服务的第二运行文件。相应的,本步骤还可以为:电子设备通过该API,从该第一目标应用程序的第一服务器中加载该第一目标应用程序的第三运行文件,该第三运行文件中包括该第一目标应用程序的至少一个目标服务的运行文件;电子设备从该第三运行文件中获取该目标服务的第二运行文件。
在本实现方式中,电子设备从第一目标应用程序对应的第一服务器中,获取至少一个目标服务的第三运行文件,从该第三运行文件中,获取当前目标服务的第二运行文件,从而使电子设备可以通过一次获取操作,获取第一目标应用程序的至少一个目标服务的运行文件,以便电子设备后续可以直接从该至少一个目标服务的运行文件中获取当前目标服务的第二运行文件,节省了后续获取目标文件的第二运行文件的时间,提高了第一目标应用程序的流畅度,提高了用户体验。
第二种实现方式,该目标服务可以为第一目标应用程序在运行过程中调用的其他应用程序的目标服务,该目标服务可以为电子设备从其他应用程序的第二目标应用程序对应的第二服务器中调用的第二运行文件,相应的,本步骤可以为:电子设备通过该API,从该目标服务对应的第二服务器中加载该目标服务的第二运行文件。例如,该目标服务可以为支付类应用程序对应的支付服务,则在本步骤中,电子设备可以从该支付类应用程序对应的第二服务器中,获取该支付服务对应的第二运行文件。
在本实现方式中,电子设备通过该第一目标应用程序对应的API调用第二服务器中目标服务的第二运行文件,从而实现为电子设备提供至少一种服务,丰富了第一目标应用程序中服务的类型,从而提高了用户体验。
电子设备获取到第二运行文件后,解析获取到的第二运行文件,从而获取该目标服务的第二代码。其中,第二运行文件也可以为后缀名为.rpk的文件,第二代码可以为使用与第一代码相同的编程语言编写的代码,该第二代码也可以为使用与第一代码不同的编程语言编写的代码,例如,第二代码和第一代码可以为相同的变成语言编写的代码,例如,该第二代码和第一代码可以为JS代码。
在步骤S305中,电子设备确定第二目标线程。
本步骤与步骤S302相似,在此不再赘述。
在步骤S306中,电子设备将该第二代码加载到该第二目标线程中。
本步骤与步骤S303相似,在此不再赘述。
需要说明的一点是,电子设备可以同时获取第一代码和第二代码,也可以先获取第一代码再过去第二代码。上述步骤在执行过程中,可以按照步骤S301-S306的顺序执行,也可以分别执行步骤S301-S303和步骤S304-S306,在本公开实施例中,对此不作具体限定。
需要说明的另一点是,第一目标应用程序在运行时,可能调用多种服务,该多个服务对应的第二代码可以加载在同一个第二目标线程中,该多个服务对应的第二代码也可以分别加载在不同的第二目标线程中。在本公开实施例中,对此不作具体限定。
在本实现方式中,电子设备在运行第一目标应用程序时,获取第一目标应用程序的第一代码和该第一目标应用程序的目标服务的第二代码,将该第一代码和第二代码分别添加到第一目标线程和第二目标线程中,以便在电子设备运行第一目标应用程序时,第一目标应用程序可以在获取目标服务的同时,继续运行该第一目标应用程序的第一代码,从而使第一应用程序的运行不受目标服务的影响,进而提高了第一目标应用程序运行的流畅性,防止了第一目标应用程序在运行时出现卡顿的情况,从而提高了用户体验。
图4是根据本公开实施例示出的一种应用程序运行方法的流程图,参见图4,该方法包括以下步骤:
在步骤S401中,在运行第一目标应用程序时,在第一目标线程中运行该第一目标应用程序的第一代码。
电子设备将第一代码和第二代码添加到同一目标线程后,可以在该目标线程中运行该第一目标应用程序的第一代码。
在步骤S402中,在该第一目标线程中运行该第一代码的过程中,当接收到调用该第一目标应用程序的目标服务的服务调用指令时,电子设备根据该服务调用指令,确定被调用的目标服务。
电子设备通过第一目标线程运行该第一应用程序的代码的过程中,可以接收用于调用目标服务的服务调用指令。该目标服务可以为第一目标应用程序在运行过程中产生的服务,该目标服务还可以为第一目标应用程序调用的其他应用程序的服务。例如,该目标服务可以为第一目标应用程序的登录服务,该目标服务还可以为第一目标应用程序调用的支付服务等。
相应的,在一种可能的实现方式中,该第一代码包括用于触发该服务调用指令的代码,则该电子设备接收到调用该第一目标应用程序的目标服务的服务调用指令的过程可以为:电子设备通过第一目标线程运行该第一目标应用程序时,通过运行的第一代码触发该服务调用指令。例如,该第一目标应用程序为游戏应用,该第一代码为用于渲染游戏画面的代码,则开启游戏应用时,通过运行第一代码渲染游戏启动画面,当游戏启动画面渲染完成时,需要触发该游戏应用的登录服务调用指令,触发该游戏登录服务,则该第一代码中包括用于渲染启动画面的代码和用于启动登录服务的代码,当该用于渲染启动画面的代码运行完成时,运行用于启动登录服务的代码,电子设备确定接收到服务调用指令,通过该服务调用指令调用游戏应用的登录服务。
在本实现方式中,通过在第一代码中添加用于触发服务调用指令的代码,从而电子设备在运行第一代码时,可以直接触发该服务调用指令,不需要通过其他操作触发服务调用指令,使得第一目标应用的运行更加流畅,提高了用户体验。
在另一种可能的实现方式中,该第一代码中不包括用于触发该服务调用指令的代码,电子设备通过接收用户触发调用指令的操作,确定触发调用指令。则该电子设备接收到调用该第一目标应用程序的目标服务的服务调用指令的过程可以通过以下步骤(1)-(2)实现,包括:
(1)电子设备显示该第一目标应用程序的第一应用界面,该第一应用界面中包括至少一个服务按钮。
在本步骤中,电子设备通过运行第一代码,将第一代码产生的第一应用界面渲染在电子设备的显示界面中,得到第一应用界面。该第一应用界面可以为第一目标应用的主界面也可以为该第一目标应用的任一功能界面。该第一应用界面中可以包括至少一个服务按钮,该至少一个服务按钮用于为电子设备提供至少一种服务。例如,该至少一个服务按钮可以为支付按钮、账号切换按钮、登录按钮等,在本公开实施例中,对该至少一个服务按钮不作具体限定。
另外,该至少一个服务按钮可以渲染在该第一应用界面的任一位置,该至少一个服务按钮位置可以根据需要进行设置并更改,在本公开实施例中,对该至少一个服务按钮的位置不作具体限定。
(2)当目标服务按钮被触发时,电子设备确定接收到调用该目标服务的服务调用指令。
在本步骤中,电子设备接收按钮触发操作,根据该按钮触发操作确定被触发的目标按钮,从而接收该目标按钮的服务调用指令。其中,该按钮触发操作可以为点击操作,相应的,当电子设备接收到用户触发的在服务按钮的点击操作时,确定接收到按钮触发操作。
在本实现方式中,通过在第一应用界面中渲染至少一个服务按钮,从而为电子设备提供至少一种服务,通过接收目标服务按钮的触发操作,确定目标服务,从而实现为电子设备提供至少一种服务,丰富了第一目标应用程序中服务的类型,从而提高了用户体验。
在步骤S403中,电子设备确定该目标服务对应的第二代码所在的第二目标线程。
电子设备接收到目标服务的服务调用指令时,确定该调用指令对应的目标服务,进而确定该目标服务对应到的第二代码,确定该第二代码的加载位置,即第二目标线程。
由于,第一目标应用程序在运行时,可能调用多种服务,该多个服务对应的第二代码可以加载在同一个第二目标线程中,该多个服务对应的第二代码也可以分别加载在不同的第二目标线程中。在本公开实施例中,对此不作具体限定。
相应的,当该多个服务对应的第二代码加载在同一第二目标线程中时,电子设备可以确定该加载有第二代码的第二目标线程。当该多个服务赌赢的第二代码加载在不同的第二目标线程中时,电子设备可以从多个第二目标线程中确定该目标服务对应的第二代码所在的第一目标线程。
在步骤S404中,电子设备向该第二目标线程发送调用请求,该调用请求用于请求启动该第二目标线程。
在本步骤中,电子设备确定加载有第二代码的第二目标线程后,启动该第二目标线程,执行步骤S305。
在步骤S405中,电子设备在该第二目标线程中运行该第二代码。
参见图5,在本步骤中,电子设备通过第一目标线程运行第一代码,通过第二目标线程运行第二代码,使得第一代码和第二代码可以同时运行在电子设备中运行。例如,该第一代码为用于渲染第一目标应用程序的显示画面的代码,第二代码为支付服务对应的代码,则电子设备在接收到目标服务对应第二代码时,在保持第一目标线程中运行该第一代码的同时,将该第二代码添加到第二目标线程中,在第二目标线程中开始运行该第二代码,电子设备中继续播放的第一目标应用程序的游戏界面,以及显示该支付服务对应的支付界面进行支付过程,实现游戏画面正常播放的同时,为第一目标应用程序提供支付服务。
需要说明的一点是,当该第二代码在该目标线程中运行完成时,电子设备释放该第一目标应用程序调用的第二目标线程。并且,当接收到第一目标应用程序的退出操作时,电子设备停止运行该第一目标应用程序,释放该第一目标应用程序调用的第一目标线程。其中,电子设备释放该第一目标线程或第二目标线程的方式可以为:删除该第一目标线程或第二目标线程,或者,将该第一目标线程或第二目标线程返回线程池中,在本公开实施例中,对此不作具体限定。
需要说明的另一点是,电子设备在运行第一目标应用程序时,可能需要运行多条代码才能实现该第一目标应用程序的运行,该多条代码可以分别运行在不同的第一目标线程中,并且,当第一目标应用程序同时调用多种目标服务时,电子设备可以确定多个第二目标线程,分别将该多个目标服务对应的第二代码运行在不同的第二目标线程中。
在本公开实施例中,通过在运行第一目标应用程序时,在第一目标线程中运行第一目标应用程序的第一代码;在该第一目标线程中运行该第一代码的过程中,当接收到调用该第一目标应用程序的目标服务的服务调用指令时,根据该服务调用指令,调用与第一目标线程不同的第二目标线程,在第二线程中运行第二代码。通过将第一目标应用程序的第一代码和该第一目标应用程序的目标服务的第二代码分别运行在不同目标线程中,使得第一目标应用程序可以在获取目标服务的同时,继续运行该第一目标应用程序的第一代码,从而使第一应用程序的运行不受目标服务的影响,进而提高了第一目标应用程序运行的流畅性,防止了第一目标应用程序在运行时出现卡顿的情况,从而提高了用户体验。
本公开实施例中涉及的快应用是一种基于电子设备的硬件平台的新型应用形态,能够基于操作系统提供的原生API运行。
快应用采用统一的标准进行开发,原生渲染,无需安装,即点即用,又兼具原生应用体验(性能、系统整合、交互等)。快应用的框架可以深度集成于操作系统中,能够在操作系统层面进行操作,实现与其他应用服务之间的无缝衔接。开发者可以做到一次性开发即可在不同类型的电子设备上运行。快应用在诞生之初就在开发规范、能力接入、开发者服务等层面实现了电子设备厂商间的标准化统一,极大地降低开发者的适配成本。
与传统应用相比,快应用具备如下特点:
Instant(即时):即点即用,用户无需等待;
Everywhere(随处可见):与电子设备的使用场景深度整合,入口无处不在,如搜索引擎、智能助手、智能推荐、应用市场、浏览器等;
Efficient(高效):准前端的开发方式,效率高。
图6是根据一示例性实施例示出的一种快应用框架600的框图,该快应用框架包括:场景入口620、快应用引擎640和操作系统(Operating System,OS)基础设施及硬件660。
场景入口620包括负一屏、全局搜索、锁屏、桌面、应用市场、浏览器和二维码中的至少一种。场景入口620的外在展现形式可以为页面形式和卡片形式。
快应用引擎640包括前端框架641、通用场景642、轻量化场景643、嵌入式SDK(Software Development Kit,软件开发工具包)644和业务接入645。
其中,前端框架641包括MVVM(Model-View-View-Model,模型-视图-视图-模型)、V-DOM(Virtual-Document Object Model,虚拟文档对象模型)、路由、基础API(Application Programming Interface,应用程序编程接口)、业务API、UI(UserInterface,用户界面)组件、路由等;
通用场景642和轻量化场景643包括JavaScript(一种编程语言)引擎、标准渲染引擎、极速渲染引擎、端-云-芯加速、安全机制、新兴场景如AI(Artificial Intelligence,人工智能)、AR(Augmented Reality,增强现实)等、系统整合(应用管理、权限管理等);
业务接入645包括推送、账号/支付等。
OS基础设施及硬件660包括:图形库、原生控件、系统服务和GPU(GraphicsProcessing Unit,图形处理器)/NPU(Neural-network Processing Unit,嵌入式神经网络处理器)等。
从执行路径层面,有标准的HTML(Hyper Text Markup Language,超文本标记语言)5方式支撑通用的Web(World Wide Web,万维网)场景,以及JS(JavaScript,一种编程语言)与Native(原生)相结合的方式,支撑更轻量、更快速的体验。
下面将按3个方面简要介绍快应用引擎的架构。
1)应用开发:
快应用的前端设计借鉴并整合了主流前端框架的设计思路:以组件化的方式构建应用,以数据绑定为核心的MVVM设计模式,以V-DOM的方式提升性能,同时选择了简洁清晰的类Vue(虚拟机脱壳引擎)的模板。同时对布局方面做了相应精简。从新的应用形态、映射原生UI、能力开放的角度,需要定义一套组件与API规范,方便开发这种快速开发应用。
2)系统整合:
快应用作为完整的应用形态,可以与系统深入整合,如同原生应用一样运行,以及与系统交互。快应用目前有两种形态:全屏方式的独立应用形态与嵌入方式的卡片形态。在独立应用形态下,给用户的体验就像原生的应用程序,有完整的生命周期管理,页面管理,路由等。快应用可以寄生于安卓的Activity(行为),页面寄生于Fragment(碎片),并通过独立的后台Service(服务)进行实例的管控。卡片形态则是另外一种形态,通过嵌入式SDK(Software Development Kit,软件开发工具包)作为一个独立的局部控件嵌入到系统的各个角落,轻量化的展现动态内容。在安全隔离方面,可通过沙盒机制,进程隔离,权限控制,并结合操作系统层的支持做到较好的安全保障。
3)性能体验及新兴场景,如JavaScript引擎、渲染引擎、端-云-芯加速、新兴场景等:
在交互体验、资源开销和稳定性等方面,快应用通过引入原生渲染路径,进而实现前端开发方式与原生渲染及平台能力的有效组合。
不同于其它的应用层的跨平台框架,快应用植根于电子设备的操作系统,可实现从芯片、操作系统与云的深度整合。利用端和云的结合以启动性能加速为例,通过云和端的协同渲染,网络链路层的优化可以大大加速快应用启动速度。同时可以整合硬件平台的特有能力,进一步提升体验。例如可以结合电子设备AI芯片,将NPU(Neural-networkProcessing Unit,网络处理器)的算力整合到快应用引擎中来,使得AI场景(人脸识别、图像超分等)在端侧可以低延时、高性能的执行,同时又有效保护了用户的隐私,并节省带宽。
图7是根据一示例性实施例示出的一种快应用的启动流程图,包括:
1)首次启动时,用户点击触发下载快应用的程序包,同时进行快应用引擎的初始化相关工作。当整个快应用的程序包下载与校验完成后,需要展示的第一个页面的JavaScript文件才会被加载并开始渲染。
2)页面渲染包括JavaScript加载、页面与JavaScript框架逻辑的执行、布局的运算,最终到原生UI控件的绘制。其中,页面内逻辑执行时会有一次或多次的网络请求,网络请求返还的数据驱动页面的再次渲染,直至首屏页面的内容完全展示。
这里的网络请求、JavaScript执行、排版与绘制并非简单的串行关系,而是并行化地交织在一起,影响着整个页面的渲染性能,并与页面设计的逻辑、网络状况与设备运行的状态强相关。
由于快应用的特殊性,快应用被期待完成更多的任务,实现更多的功能。目前,快应用的功能正在逐步完善中,本公开实施例就是提供了一种快应用的新功能,利用该新功能,快应用能够实现与用户的语音交互,扩展了快应用的功能,提高了快应用的处理能力以及实用性。
图8是根据一示例性实施例示出的一种应用程序运行装置的结构示意图。如图8所示,该应用程序运行装置包括:
第一运行模块801,被配置为在运行第一目标应用程序时,在第一目标线程中运行该第一目标应用程序的第一代码;
第一调用模块802,被配置为在该第一目标线程中运行该第一代码的过程中,当接收到调用该第一目标应用程序的目标服务的服务调用指令时,根据该服务调用指令,调用用于运行该目标服务的第二代码的第二目标线程,该第二目标线程与该第一目标线程不同;
第二运行模块803,被配置为在该第二目标线程中运行该第二代码。
在一种可能的实现方式中,该第一调用模块802,还被配置为根据该服务调用指令,确定被调用的该目标服务;确定该目标服务对应的第二代码所在的第二目标线程;向该第二目标线程发送调用请求,该调用请求用于请求启动该第二目标线程。
在另一种可能的实现方式中,该装置包括:
第一获取模块,被配置为当接收到该第一目标应用程序的启动操作时,获取该目标服务的第二代码;
第一确定模块,被配置为确定该第二目标线程;
第一加载模块,被配置为将该第二代码加载到该第二目标线程中。
在另一种可能的实现方式中,该第一获取模块,还被配置为通过该第一目标应用程序的API,加载该第一目标应用程序的目标服务的第二运行文件;解析该第二运行文件,得到该目标服务的第二代码。
在另一种可能的实现方式中,该第一获取模块,还被配置为通过该API,从该第一目标应用程序的第一服务器中加载该目标服务的第二运行文件;或者,通过该API,从该目标服务的第二服务器中加载该目标服务的第二运行文件。
在另一种可能的实现方式中,该第一获取模块,还被配置为通过该API,从该第一服务器中加载该第一目标应用程序的第三运行文件,该第三运行文件中包括该第一目标应用程序的至少一个目标服务的运行文件;从该第三运行文件中获取该目标服务的第二运行文件。
在另一种可能的实现方式中,该装置还包括:
第二获取模块,被配置为当接收到该第一目标应用程序的启动操作时,获取该第一目标应用程序的第一代码;
第二确定模块,被配置为确定该第一目标线程;
第二加载模块,被配置为将该第一代码加载到该第一目标线程中。
在另一种可能的实现方式中,该第二获取模块,还被配置为通过该第一目标应用程序的应用程序编程接口API,从该第一目标应用程序的第一服务器中加载该第一目标应用程序的第一运行文件;解析该第一运行文件,得到该第一目标应用程序的第一代码。
在另一种可能的实现方式中,该装置还包括:
显示模块,被配置为显示该第一目标应用程序的应用界面,该应用界面中包括至少一个服务按钮;
第三确定模块,被配置为当目标服务按钮被触发时,确定接收到调用该目标服务的服务调用指令。
在另一种可能的实现方式中,该装置还包括:
第二调用模块,被配置为调用本地已安装的第二目标应用程序,该第二目标应用程序中包括本地未安装的该第一目标应用程序的应用接口;
第三运行模块,被配置为通过该第一目标应用程序的应用接口,在本地运行该第一目标应用程序。
在本公开实施例中,通过在运行第一目标应用程序时,在第一目标线程中运行第一目标应用程序的第一代码;在该第一目标线程中运行该第一代码的过程中,当接收到调用该第一目标应用程序的目标服务的服务调用指令时,根据该服务调用指令,调用与第一目标线程不同的第二目标线程,在第二线程中运行第二代码。通过将第一目标应用程序的第一代码和该第一目标应用程序的目标服务的第二代码分别运行在不同目标线程中,使得第一目标应用程序可以在获取目标服务的同时,继续运行该第一目标应用程序的第一代码,从而使第一应用程序的运行不受目标服务的影响,进而提高了第一目标应用程序运行的流畅性,防止了第一目标应用程序在运行时出现卡顿的情况,从而提高了用户体验。
需要说明的是:上述实施例提供的应用程序运行装置在应用程序运行时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的应用程序运行装置与应用程序运行方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图9是根据一示例性实施例示出的一种电子设备900的框图。例如,电子设备900可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参见图9,电子设备900可以包括以下一个或多个组件:处理组件902,存储器904,电源组件906,多媒体组件908,音频组件910,输入/输出(I/O)的接口912,传感器组件914,以及通信组件916。
处理组件902通常控制电子设备900的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件902可以包括一个或多个处理器920来执行指令,以完成上述应用程序运行方法的全部或部分步骤。此外,处理组件902可以包括一个或多个模块,便于处理组件902和其他组件之间的交互。例如,处理组件902可以包括多媒体模块,以方便多媒体组件908和处理组件902之间的交互。
存储器904被配置为存储各种类型的数据以支持在电子设备900的操作。这些数据的示例包括用于在电子设备900上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器904可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件906为电子设备900的各种组件提供电力。电源组件906可以包括电源管理系统,一个或多个电源,及其他与为电子设备900生成、管理和分配电力相关联的组件。
多媒体组件908包括在所述电子设备900和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件908包括一个前置摄像头和/或后置摄像头。当电子设备900处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件910被配置为输出和/或输入音频信号。例如,音频组件910包括一个麦克风(MIC),当电子设备900处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器904或经由通信组件916发送。在一些实施例中,音频组件910还包括一个扬声器,用于输出音频信号。
I/O接口912为处理组件902和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件914包括一个或多个传感器,用于为电子设备900提供各个方面的状态评估。例如,传感器组件914可以检测到电子设备900的打开/关闭状态,组件的相对定位,例如所述组件为电子设备900的显示器和小键盘,传感器组件914还可以检测电子设备900或电子设备900一个组件的位置改变,用户与电子设备900接触的存在或不存在,电子设备900方位或加速/减速和电子设备900的温度变化。传感器组件914可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件914还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件914还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件916被配置为便于电子设备900和其他设备之间有线或无线方式的通信。电子设备900可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件916经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件916还包括近场通信(NFC)模块,以促进短程通信。
在示例性实施例中,电子设备900可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述应用程序运行方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器904,上述指令可由电子设备900的处理器920执行以完成上述方法。例如,非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本公开还提供了一种计算机程序产品,所述计算机程序产品包括一个或多个计算机程序,所述计算机程序被处理器执行时,用于实现上述各个方法实施例提供的应用程序运行方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本公开的可选实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (22)
1.一种应用程序运行方法,其特征在于,应用于电子设备,所述方法包括:
在本地运行第一目标应用程序时,在第一目标线程中运行所述第一目标应用程序的第一代码,所述第一代码为用于实现所述第一目标应用程序功能的代码;
在所述第一目标线程中运行所述第一代码的过程中,当接收到调用所述第一目标应用程序的目标服务的服务调用指令时,根据所述服务调用指令,调用用于运行所述目标服务的第二代码的第二目标线程,所述第二目标线程与所述第一目标线程不同,所述目标服务为所述第一目标应用程序在运行过程中产生的服务,所述第一目标应用程序为未在本地安装的快应用,所述快应用基于所述电子设备的操作系统提供的原生API运行;
在所述第二目标线程中运行所述第二代码。
2.根据权利要求1所述的方法,其特征在于,所述根据所述服务调用指令,调用用于运行所述目标服务的第二代码的第二目标线程,包括:
根据所述服务调用指令,确定被调用的所述目标服务;
确定所述目标服务对应的第二代码所在的第二目标线程;
向所述第二目标线程发送调用请求,所述调用请求用于请求启动所述第二目标线程。
3.根据权利要求2所述的方法,其特征在于,所述方法包括:
当接收到所述第一目标应用程序的启动操作时,获取所述目标服务的第二代码;
确定所述第二目标线程;
将所述第二代码加载到所述第二目标线程中。
4.根据权利要求3所述的方法,其特征在于,所述获取所述目标服务的第二代码,包括:
通过所述第一目标应用程序的API,加载所述第一目标应用程序的目标服务的第二运行文件;
解析所述第二运行文件,得到所述目标服务的第二代码。
5.根据权利要求4所述的方法,其特征在于,所述通过所述第一目标应用程序的API,加载所述第一目标应用程序的目标服务的第二运行文件,包括:
通过所述API,从所述第一目标应用程序的第一服务器中加载所述目标服务的第二运行文件;或者,
通过所述API,从所述目标服务的第二服务器中加载所述目标服务的第二运行文件。
6.根据权利要求5所述的方法,其特征在于,所述通过所述API,从所述第一目标应用程序的第一服务器中加载所述目标服务的第二运行文件,包括:
通过所述API,从所述第一服务器中加载所述第一目标应用程序的第三运行文件,所述第三运行文件中包括所述第一目标应用程序的至少一个目标服务的运行文件;
从所述第三运行文件中获取所述目标服务的第二运行文件。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当接收到所述第一目标应用程序的启动操作时,获取所述第一目标应用程序的第一代码;
确定所述第一目标线程;
将所述第一代码加载到所述第一目标线程中。
8.根据权利要求7所述的方法,其特征在于,所述获取所述第一目标应用程序的第一代码,包括:
通过所述第一目标应用程序的应用程序编程接口API,从所述第一目标应用程序的第一服务器中加载所述第一目标应用程序的第一运行文件;
解析所述第一运行文件,得到所述第一目标应用程序的第一代码。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
显示所述第一目标应用程序的应用界面,所述应用界面中包括至少一个服务按钮;
当目标服务按钮被触发时,确定接收到调用所述目标服务的服务调用指令。
10.根据权利要求1-9任一项所述的方法,其特征在于,所述方法还包括:
调用本地已安装的第二目标应用程序,所述第二目标应用程序中包括本地未安装的所述第一目标应用程序的应用接口;
通过所述第一目标应用程序的应用接口,在本地运行所述第一目标应用程序。
11.一种应用程序运行装置,其特征在于,应用于电子设备,所述装置包括:
第一运行模块,被配置为在本地运行第一目标应用程序时,在第一目标线程中运行所述第一目标应用程序的第一代码,所述第一代码为用于实现所述第一目标应用程序功能的代码;
第一调用模块,被配置为在所述第一目标线程中运行所述第一代码的过程中,当接收到调用所述第一目标应用程序的目标服务的服务调用指令时,根据所述服务调用指令,调用用于运行所述目标服务的第二代码的第二目标线程,所述第二目标线程与所述第一目标线程不同,所述目标服务为所述第一目标应用程序在运行过程中产生的服务,所述第一目标应用程序为未在本地安装的快应用,所述快应用基于所述电子设备的操作系统提供的原生API运行;
第二运行模块,被配置为在所述第二目标线程中运行所述第二代码。
12.根据权利要求11所述的装置,其特征在于,所述第一调用模块,还被配置为根据所述服务调用指令,确定被调用的所述目标服务;确定所述目标服务对应的第二代码所在的第二目标线程;向所述第二目标线程发送调用请求,所述调用请求用于请求启动所述第二目标线程。
13.根据权利要求12所述的装置,其特征在于,所述装置包括:
第一获取模块,被配置为当接收到所述第一目标应用程序的启动操作时,获取所述目标服务的第二代码;
第一确定模块,被配置为确定所述第二目标线程;
第一加载模块,被配置为将所述第二代码加载到所述第二目标线程中。
14.根据权利要求13所述的装置,其特征在于,所述第一获取模块,还被配置为通过所述第一目标应用程序的API,加载所述第一目标应用程序的目标服务的第二运行文件;解析所述第二运行文件,得到所述目标服务的第二代码。
15.根据权利要求14所述的装置,其特征在于,所述第一获取模块,还被配置为通过所述API,从所述第一目标应用程序的第一服务器中加载所述目标服务的第二运行文件;或者,通过所述API,从所述目标服务的第二服务器中加载所述目标服务的第二运行文件。
16.根据权利要求15所述的装置,其特征在于,所述第一获取模块,还被配置为通过所述API,从所述第一服务器中加载所述第一目标应用程序的第三运行文件,所述第三运行文件中包括所述第一目标应用程序的至少一个目标服务的运行文件;从所述第三运行文件中获取所述目标服务的第二运行文件。
17.根据权利要求11所述的装置,其特征在于,所述装置还包括:
第二获取模块,被配置为当接收到所述第一目标应用程序的启动操作时,获取所述第一目标应用程序的第一代码;
第二确定模块,被配置为确定所述第一目标线程;
第二加载模块,被配置为将所述第一代码加载到所述第一目标线程中。
18.根据权利要求17所述的装置,其特征在于,所述第二获取模块,还被配置为通过所述第一目标应用程序的应用程序编程接口API,从所述第一目标应用程序的第一服务器中加载所述第一目标应用程序的第一运行文件;解析所述第一运行文件,得到所述第一目标应用程序的第一代码。
19.根据权利要求11所述的装置,其特征在于,所述装置还包括:
显示模块,被配置为显示所述第一目标应用程序的应用界面,所述应用界面中包括至少一个服务按钮;
第三确定模块,被配置为当目标服务按钮被触发时,确定接收到调用所述目标服务的服务调用指令。
20.根据权利要求11-19任一项所述的装置,其特征在于,所述装置还包括:
第二调用模块,被配置为调用本地已安装的第二目标应用程序,所述第二目标应用程序中包括本地未安装的所述第一目标应用程序的应用接口;
第三运行模块,被配置为通过所述第一目标应用程序的应用接口,在本地运行所述第一目标应用程序。
21.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理器;
用于存储所述一个或多个处理器可执行指令的易失性或非易失性存储器;
其中,所述一个或多个处理器被配置为:
在本地运行第一目标应用程序时,在第一目标线程中运行所述第一目标应用程序的第一代码,所述第一代码为用于实现所述第一目标应用程序功能的代码;
在所述第一目标线程中运行所述第一代码的过程中,当接收到调用所述第一目标应用程序的目标服务的服务调用指令时,根据所述服务调用指令,调用用于运行所述目标服务的第二代码的第二目标线程,所述第二目标线程与所述第一目标线程不同,所述目标服务为所述第一目标应用程序在运行过程中产生的服务,所述第一目标应用程序为未在本地安装的快应用,所述快应用基于所述电子设备的操作系统提供的原生API运行;
在所述第二目标线程中运行所述第二代码。
22.一种非临时性计算机可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1-10任一项所述的应用程序运行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911304709.XA CN111104183B (zh) | 2019-12-17 | 2019-12-17 | 应用程序运行方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911304709.XA CN111104183B (zh) | 2019-12-17 | 2019-12-17 | 应用程序运行方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111104183A CN111104183A (zh) | 2020-05-05 |
CN111104183B true CN111104183B (zh) | 2023-09-12 |
Family
ID=70422740
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911304709.XA Active CN111104183B (zh) | 2019-12-17 | 2019-12-17 | 应用程序运行方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111104183B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115145647A (zh) * | 2021-03-30 | 2022-10-04 | 华为技术有限公司 | 应用程序的组件加载方法及相关装置 |
CN118426869A (zh) * | 2024-06-04 | 2024-08-02 | 荣耀终端有限公司 | 数据加载方法、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107977272A (zh) * | 2016-10-25 | 2018-05-01 | 腾讯科技(深圳)有限公司 | 应用运行的方法及装置 |
CN109491725A (zh) * | 2018-11-12 | 2019-03-19 | 火烈鸟网络(广州)股份有限公司 | 应用程序可交互多开方法和系统、存储介质、电子设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7216346B2 (en) * | 2002-12-31 | 2007-05-08 | International Business Machines Corporation | Method and apparatus for managing thread execution in a multithread application |
CN104750543B (zh) * | 2013-12-26 | 2018-06-15 | 杭州华为数字技术有限公司 | 线程创建方法、业务请求处理方法及相关设备 |
-
2019
- 2019-12-17 CN CN201911304709.XA patent/CN111104183B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107977272A (zh) * | 2016-10-25 | 2018-05-01 | 腾讯科技(深圳)有限公司 | 应用运行的方法及装置 |
CN109491725A (zh) * | 2018-11-12 | 2019-03-19 | 火烈鸟网络(广州)股份有限公司 | 应用程序可交互多开方法和系统、存储介质、电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111104183A (zh) | 2020-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111026396B (zh) | 页面渲染方法、装置、电子设备及存储介质 | |
CN110990105B (zh) | 界面显示方法、装置、电子设备及存储介质 | |
CN110874217B (zh) | 快应用的界面显示方法、装置及存储介质 | |
CN110990075B (zh) | 快应用的启动方法、装置、设备及存储介质 | |
CN111026490B (zh) | 页面渲染方法、装置、电子设备及存储介质 | |
CN111026491B (zh) | 界面显示方法、装置、电子设备、服务器及存储介质 | |
CN111078325B (zh) | 应用程序运行方法、装置、电子设备及存储介质 | |
CN110851240B (zh) | 功能调用方法、装置及存储介质 | |
CN111008057A (zh) | 页面展示方法、装置及存储介质 | |
CN110851108A (zh) | 电子设备操作方法、装置、电子设备及存储介质 | |
CN109710259B (zh) | 一种数据处理方法、装置及存储介质 | |
CN110968362B (zh) | 应用运行方法、装置及存储介质 | |
CN110971974B (zh) | 配置参数创建方法、装置、终端及存储介质 | |
CN110865863B (zh) | 快应用的界面显示方法、装置及存储介质 | |
CN110865864B (zh) | 快应用的界面显示方法、装置、设备及存储介质 | |
CN111427622A (zh) | 应用程序中脚本代码的执行方法及装置 | |
CN111104183B (zh) | 应用程序运行方法、装置、电子设备及存储介质 | |
CN110908629A (zh) | 电子设备操作方法、装置、电子设备和存储介质 | |
CN111008050B (zh) | 页面任务执行方法、装置、终端及存储介质 | |
US11507633B2 (en) | Card data display method and apparatus, and storage medium | |
CN111221613B (zh) | 程序调用方法及装置、存储介质 | |
CN115373763B (zh) | 插件加载方法、装置、电子设备及存储介质 | |
CN110891194B (zh) | 评论信息显示方法、装置、终端及存储介质 | |
CN111338961B (zh) | 应用调试方法及装置、电子设备及存储介质 | |
CN110865760A (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 |