首页 / 专利库 / 资料储存系统 / 非易失性存储器 / 应用程序运行方法、装置、电子设备及存储介质

应用程序运行方法、装置、电子设备及存储介质

阅读:197发布:2020-05-11

专利汇可以提供应用程序运行方法、装置、电子设备及存储介质专利检索,专利查询,专利分析的服务。并且本公开是关于一种应用程序运行方法、装置、 电子 设备及存储介质,属于计算机技术领域。方法包括:在运行第一目标应用程序时,在目标线程中运行第一目标应用程序的第一代码;在该目标线程中运行该第一代码的过程中,当接收到调用该第一目标应用程序的目标服务的服务调用指令时,根据该服务调用指令,在所述目标线程中调用所述目标服务的第二代码;在该目标线程中运行该第二代码。通过将第一目标应用程序的第一代码和该第一目标应用程序的目标服务的第二代码运行在同一目标线程中,使得第一目标应用程序和目标服务之间的交互更加流畅,防止了第一目标应用程序在运行时出现卡顿的情况,从而提高了用户体验。,下面是应用程序运行方法、装置、电子设备及存储介质专利的具体信息内容。

1.一种应用程序运行方法,其特征在于,所述方法包括:
在运行第一目标应用程序时,在目标线程中运行第一目标应用程序的第一代码;
在所述目标线程中运行所述第一代码的过程中,当接收到调用所述第一目标应用程序的目标服务的服务调用指令时,根据所述服务调用指令,在所述目标线程中调用所述目标服务的第二代码;
在所述目标线程中运行所述第二代码。
2.根据权利要求1所述的方法,其特征在于,所述在所述目标线程中运行所述第二代码,包括:
在所述目标线程中暂停运行所述第一代码,以及,在所述目标线程中运行所述第二代码。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当所述第二代码在所述目标线程中运行完成时,继续在所述目标线程中运行所述第一代码。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当接收到所述第一目标应用程序的启动操作时,获取所述第一目标应用程序的第一代码,以及获取所述目标服务的第二代码;
确定所述目标线程;
将所述第一代码和所述第二代码加载到所述目标线程中。
5.根据权利要求4所述的方法,其特征在于,所述根据所述服务调用指令,在所述目标线程中调用所述目标服务的第二代码,包括:
当接收到调用所述第一目标应用程序的目标服务的服务调用指令时,根据所述服务调用指令,确定被调用的目标服务;
在所述目标线程中,确定所述目标服务对应的第二代码。
6.根据权利要求4所述的方法,其特征在于,所述获取所述第一目标应用程序的第一代码,包括:
通过所述第一目标应用程序的应用程序编程接口API,从所述第一目标应用程序的第一服务器中加载所述第一目标应用程序的第一运行文件;
解析所述第一运行文件,得到所述第一目标应用程序的第一代码。
7.根据权利要求4所述的方法,其特征在于,所述获取所述目标服务的第二代码,包括:
通过所述第一目标应用程序的API,加载所述第一目标应用程序的目标服务的第二运行文件;
解析所述第二运行文件,得到所述目标服务的第二代码。
8.根据权利要求7所述的方法,其特征在于,所述通过所述第一目标应用程序的API,加载所述第一目标应用程序的目标服务的第二运行文件,包括:
通过所述API,从所述第一目标应用程序的第一服务器中加载所述目标服务的第二运行文件;或者,
通过所述API,从所述目标服务的第二服务器中加载所述目标服务的第二运行文件。
9.根据权利要求8所述的方法,其特征在于,所述通过所述API,从所述第一目标应用程序的第一服务器中加载所述目标服务的第二运行文件,包括:
通过所述API,从所述第一服务器中加载所述第一目标应用程序的第三运行文件,所述第三运行文件中包括所述第一目标应用程序的至少一个目标服务的运行文件;
从所述第三运行文件中获取所述目标服务的第一运行文件。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
显示所述第一目标应用程序的应用界面,所述应用界面中包括至少一个服务按钮;
当目标服务按钮被触发时,确定接收到调用所述目标服务的服务调用指令。
11.根据权利要求1所述的方法,其特征在于,所述在运行第一目标应用程序时,在目标线程中运行第一目标应用程序的第一代码,包括:
在运行所述第一目标应用程序时,从线程池中选择所述目标线程,在所述目标线程中运行第一目标应用程序的第一代码;或者,
在运行所述第一目标应用程序时,生成所述目标线程,在所述目标线程中运行第一目标应用程序的第一代码。
12.根据权利要求1-11任一项所述的方法,其特征在于,所述方法还包括:
调用本地已安装的第二目标应用程序,所述第二目标应用程序中包括本地未安装的所述第一目标应用程序的应用接口;
通过所述第一目标应用程序的应用接口,在本地运行所述第一目标应用程序。
13.一种应用程序运行装置,其特征在于,所述装置包括:
第一运行模,被配置为在运行第一目标应用程序时,在目标线程中运行第一目标应用程序的第一代码;
第一调用模块,被配置为在所述目标线程中运行所述第一代码的过程中,当接收到调用所述第一目标应用程序的目标服务的服务调用指令时,根据所述服务调用指令,在所述目标线程中调用所述目标服务的第二代码;
第二运行模块,被配置为在所述目标线程中运行所述第二代码。
14.根据权利要求13所述的装置,其特征在于,所述第二运行模块,还被配置为在所述目标线程中暂停运行所述第一代码,以及,在所述目标线程中运行所述第二代码。
15.根据权利要求14所述的装置,其特征在于,所述第一运行模块,还被配置为当所述第二代码在所述目标线程中运行完成时,继续在所述目标线程中运行所述第一代码。
16.根据权利要求13所述的装置,其特征在于,所述装置还包括:
获取模块,被配置为当接收到所述第一目标应用程序的启动操作时,获取所述第一目标应用程序的第一代码,以及获取所述目标服务的第二代码;
第一确定模块,被配置为确定所述目标线程;
加载模块,被配置为将所述第一代码和所述第二代码加载到所述目标线程中。
17.根据权利要求16所述的装置,其特征在于,所述第一调用模块,还被配置为当接收到调用所述第一目标应用程序的目标服务的服务调用指令时,根据所述服务调用指令,确定被调用的目标服务;在所述目标线程中,确定所述目标服务对应的第二代码。
18.根据权利要求16所述的装置,其特征在于,所述获取模块,还被配置为通过所述第一目标应用程序的应用程序编程接口API,从所述第一目标应用程序的第一服务器中加载所述第一目标应用程序的第一运行文件;解析所述第一运行文件,得到所述第一目标应用程序的第一代码。
19.根据权利要求16所述的装置,其特征在于,所述获取模块,还被配置为通过所述第一目标应用程序的API,加载所述第一目标应用程序的目标服务的第二运行文件;解析所述第二运行文件,得到所述目标服务的第二代码。
20.根据权利要求19所述的装置,其特征在于,所述获取模块,还被配置为通过所述API,从所述第一目标应用程序的第一服务器中加载所述目标服务的第二运行文件;或者,通过所述API,从所述目标服务的第二服务器中加载所述目标服务的第二运行文件。
21.根据权利要求20所述的装置,其特征在于,所述获取模块,还被配置为通过所述API,从所述第一服务器中加载所述第一目标应用程序的第三运行文件,所述第三运行文件中包括所述第一目标应用程序的至少一个目标服务的运行文件;从所述第三运行文件中获取所述目标服务的第一运行文件。
22.根据权利要求13所述的装置,其特征在于,所述装置还包括:
显示模块,被配置为显示所述第一目标应用程序的应用界面,所述应用界面中包括至少一个服务按钮;
第二确定模块,被配置为当目标服务按钮被触发时,确定接收到调用所述目标服务的服务调用指令。
23.根据权利要求13所述的装置,其特征在于,所述第一运行模块,还被配置为在运行所述第一目标应用程序时,从线程池中选择所述目标线程,在所述目标线程中运行第一目标应用程序的第一代码;或者,在运行所述第一目标应用程序时,生成所述目标线程,在所述目标线程中运行第一目标应用程序的第一代码。
24.根据权利要求13-23任一项所述的装置,其特征在于,所述装置还包括:
第二调用模块,包配置为调用本地已安装的第二目标应用程序,所述第二目标应用程序中包括本地未安装的所述第一目标应用程序的应用接口;
第三运行模块,被配置为通过所述第一目标应用程序的应用接口,在本地运行所述第一目标应用程序。
25.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理器;
用于存储所述一个或多个处理器可执行指令的易失性或非易失性存储器
其中,所述一个或多个处理器被配置为:
在运行第一目标应用程序时,在目标线程中运行第一目标应用程序的第一代码;
在所述目标线程中运行所述第一代码的过程中,当接收到调用所述第一目标应用程序的目标服务的服务调用指令时,根据所述服务调用指令,在所述目标线程中调用所述目标服务的第二代码;
在所述目标线程中运行所述第二代码。
26.一种非临时性计算机可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如权利要求1-12任一项所述的应用程序运行方法。

说明书全文

应用程序运行方法、装置、电子设备及存储介质

技术领域

[0001] 本公开是关于计算机技术领域,具体来说是关于一种应用程序运行方法、装置、电子设备及存储介质。

背景技术

[0002] 随着计算机技术的发展,电子设备上可以运行多种应用程序。并且,这些应用程序可以调用多种服务,来满足用户的需求。其中,这些服务可以为该应用程序本身的服务,也可以为其他应用程序可以提供的服务。
[0003] 例如,在运行游戏应用时,可以调用登陆服务实现将用户的游戏账号登录到当前的游戏应用中,或者,可以调用支付服务实现对游戏应用中登录的账号进行充值,来提高用户体验。发明内容
[0004] 本公开提供一种应用程序运行方法、装置、电子设备及存储介质,能够克服相关技术中的问题,所述技术方案如下:
[0005] 一方面,提供了一种应用程序运行方法,所述方法包括:
[0006] 在运行第一目标应用程序时,在目标线程中运行第一目标应用程序的第一代码;
[0007] 在所述目标线程中运行所述第一代码的过程中,当接收到调用所述第一目标应用程序的目标服务的服务调用指令时,根据所述服务调用指令,在所述目标线程中调用所述目标服务的第二代码;
[0008] 在所述目标线程中运行所述第二代码。
[0009] 在一种可能的实现方式中,所述在所述目标线程中运行所述第二代码,包括:
[0010] 在所述目标线程中暂停运行所述第一代码,以及,在所述目标线程中运行所述第二代码。
[0011] 在另一种可能的实现方式中,所述方法还包括:
[0012] 当所述第二代码在所述目标线程中运行完成时,继续在所述目标线程中运行所述第一代码。
[0013] 在另一种可能的实现方式中,所述方法还包括:
[0014] 当接收到所述第一目标应用程序的启动操作时,获取所述第一目标应用程序的第一代码,以及获取所述目标服务的第二代码;
[0015] 确定所述目标线程;
[0016] 将所述第一代码和所述第二代码加载到所述目标线程中。
[0017] 在另一种可能的实现方式中,所述根据所述服务调用指令,在所述目标线程中调用所述目标服务的第二代码,包括:
[0018] 当接收到调用所述第一目标应用程序的目标服务的服务调用指令时,根据所述服务调用指令,确定被调用的目标服务;
[0019] 在所述目标线程中,确定所述目标服务对应的第二代码。
[0020] 在另一种可能的实现方式中,所述获取所述第一目标应用程序的第一代码,包括:
[0021] 通过所述第一目标应用程序的应用程序编程接口API,从所述第一目标应用程序的第一服务器中加载所述第一目标应用程序的第一运行文件;
[0022] 解析所述第一运行文件,得到所述第一目标应用程序的第一代码。
[0023] 在另一种可能的实现方式中,所述获取所述目标服务的第二代码,包括:
[0024] 通过所述第一目标应用程序的API,加载所述第一目标应用程序的目标服务的第二运行文件;
[0025] 解析所述第二运行文件,得到所述目标服务的第二代码。
[0026] 在另一种可能的实现方式中,所述通过所述第一目标应用程序的API,加载所述第一目标应用程序的目标服务的第二运行文件,包括:
[0027] 通过所述API,从所述第一目标应用程序的第一服务器中加载所述目标服务的第二运行文件;或者,
[0028] 通过所述API,从所述目标服务的第二服务器中加载所述目标服务的第二运行文件。
[0029] 在另一种可能的实现方式中,所述通过所述API,从所述第一目标应用程序的第一服务器中加载所述目标服务的第二运行文件,包括:
[0030] 通过所述API,从所述第一服务器中加载所述第一目标应用程序的第三运行文件,所述第三运行文件中包括所述第一目标应用程序的至少一个目标服务的运行文件;
[0031] 从所述第三运行文件中获取所述目标服务的第一运行文件。
[0032] 在另一种可能的实现方式中,所述方法还包括:
[0033] 显示所述第一目标应用程序的应用界面,所述应用界面中包括至少一个服务按钮;
[0034] 当目标服务按钮被触发时,确定接收到调用所述目标服务的服务调用指令。
[0035] 在另一种可能的实现方式中,所述在运行第一目标应用程序时,在目标线程中运行第一目标应用程序的第一代码,包括:
[0036] 在运行所述第一目标应用程序时,从线程池中选择所述目标线程,在所述目标线程中运行第一目标应用程序的第一代码;或者,
[0037] 在运行所述第一目标应用程序时,生成所述目标线程,在所述目标线程中运行第一目标应用程序的第一代码。
[0038] 在另一种可能的实现方式中,所述方法还包括:
[0039] 调用本地已安装的第二目标应用程序,所述第二目标应用程序中包括本地未安装的所述第一目标应用程序的应用接口;
[0040] 通过所述第一目标应用程序的应用接口,在本地运行所述第一目标应用程序。
[0041] 另一方面,提供了一种应用程序运行装置,所述装置包括:
[0042] 第一运行模,被配置为在运行第一目标应用程序时,在目标线程中运行第一目标应用程序的第一代码;
[0043] 第一调用模块,被配置为在所述目标线程中运行所述第一代码的过程中,当接收到调用所述第一目标应用程序的目标服务的服务调用指令时,根据所述服务调用指令,在所述目标线程中调用所述目标服务的第二代码;
[0044] 第二运行模块,被配置为在所述目标线程中运行所述第二代码。
[0045] 在另一种可能的实现方式中,所述第二运行模块,还被配置为在所述目标线程中暂停运行所述第一代码,以及,在所述目标线程中运行所述第二代码。
[0046] 在另一种可能的实现方式中,所述第一运行模块,还被配置为当所述第二代码在所述目标线程中运行完成时,继续在所述目标线程中运行所述第一代码。
[0047] 在另一种可能的实现方式中,所述装置还包括:
[0048] 获取模块,被配置为当接收到所述第一目标应用程序的启动操作时,获取所述第一目标应用程序的第一代码,以及获取所述目标服务的第二代码;
[0049] 第一确定模块,被配置为确定所述目标线程;
[0050] 加载模块,被配置为将所述第一代码和所述第二代码加载到所述目标线程中。
[0051] 在另一种可能的实现方式中,所述第一调用模块,还被配置为当接收到调用所述第一目标应用程序的目标服务的服务调用指令时,根据所述服务调用指令,确定被调用的目标服务;在所述目标线程中,确定所述目标服务对应的第二代码。
[0052] 在另一种可能的实现方式中,所述获取模块,还被配置为通过所述第一目标应用程序的应用程序编程接口API,从所述第一目标应用程序的第一服务器中加载所述第一目标应用程序的第一运行文件;解析所述第一运行文件,得到所述第一目标应用程序的第一代码。
[0053] 在另一种可能的实现方式中,所述获取模块,还被配置为通过所述第一目标应用程序的API,加载所述第一目标应用程序的目标服务的第二运行文件;解析所述第二运行文件,得到所述目标服务的第二代码。
[0054] 在另一种可能的实现方式中,所述获取模块,还被配置为通过所述API,从所述第一目标应用程序的第一服务器中加载所述目标服务的第二运行文件;或者,通过所述API,从所述目标服务的第二服务器中加载所述目标服务的第二运行文件。
[0055] 在另一种可能的实现方式中,所述获取模块,还被配置为通过所述API,从所述第一服务器中加载所述第一目标应用程序的第三运行文件,所述第三运行文件中包括所述第一目标应用程序的至少一个目标服务的运行文件;从所述第三运行文件中获取所述目标服务的第一运行文件。
[0056] 在另一种可能的实现方式中,所述装置还包括:
[0057] 显示模块,被配置为显示所述第一目标应用程序的应用界面,所述应用界面中包括至少一个服务按钮;
[0058] 第二确定模块,被配置为当目标服务按钮被触发时,确定接收到调用所述目标服务的服务调用指令。
[0059] 在另一种可能的实现方式中,所述第一运行模块,还被配置为在运行所述第一目标应用程序时,从线程池中选择所述目标线程,在所述目标线程中运行第一目标应用程序的第一代码;或者,在运行所述第一目标应用程序时,生成所述目标线程,在所述目标线程中运行第一目标应用程序的第一代码。
[0060] 在另一种可能的实现方式中,所述装置还包括:
[0061] 第二调用模块,包配置为调用本地已安装的第二目标应用程序,所述第二目标应用程序中包括本地未安装的所述第一目标应用程序的应用接口;
[0062] 第三运行模块,被配置为通过所述第一目标应用程序的应用接口,在本地运行所述第一目标应用程序。
[0063] 另一方面,提供了一种电子设备,所述电子设备包括:
[0064] 一个或多个处理器;
[0065] 用于存储所述一个或多个处理器可执行指令的易失性或非易失性存储器
[0066] 其中,所述一个或多个处理器被配置为:
[0067] 在运行第一目标应用程序时,在目标线程中运行第一目标应用程序的第一代码;
[0068] 在所述目标线程中运行所述第一代码的过程中,当接收到调用所述第一目标应用程序的目标服务的服务调用指令时,根据所述服务调用指令,在所述目标线程中调用所述目标服务的第二代码;
[0069] 在所述目标线程中运行所述第二代码。
[0070] 另一方面,提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如本公开实施例中,方法实施例所述的应用程序运行方法。
[0071] 本公开实施例提供的技术方案带来的有益效果至少包括:
[0072] 在本公开实施例中,通过在运行第一目标应用程序时,在目标线程中运行第一目标应用程序的第一代码;在该目标线程中运行该第一代码的过程中,当接收到调用该第一目标应用程序的目标服务的服务调用指令时,根据该服务调用指令,在该目标线程中运行该第二代码。通过将第一目标应用程序的第一代码和该第一目标应用程序的目标服务的第二代码运行在同一目标线程中,使得第一目标应用程序和目标服务之间的交互更加流畅,防止了第一目标应用程序在运行时出现卡顿的情况,从而提高了用户体验。附图说明
[0073] 此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
[0074] 图1是根据一示例性实施例示出的一种应用程序运行所涉及的系统架构的示意图;
[0075] 图2是根据一示例性实施例示出的一种应用程序运行方法的流程图
[0076] 图3是根据一示例性实施例示出的一种应用程序运行方法的流程图;
[0077] 图4是根据一示例性实施例示出的一种应用程序运行方法的流程图;
[0078] 图5是根据一示例性实施例示出的一种目标线程运行第一代码和第二代码的流程图;
[0079] 图6是根据一示例性实施例示出的一种快应用框架框图
[0080] 图7是根据一示例性实施例示出的一种快应用的启动流程图;
[0081] 图8是根据一示例性实施例示出的一种应用程序运行装置的框图;
[0082] 图9是根据一示例性实施例示出的一种电子设备的框图。

具体实施方式

[0083] 下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
[0084] 为使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开实施方式作进一步地详细描述。
[0085] 这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
[0086] 此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本公开的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
[0087] 快应用:是一种新型应用程序,能够基于操作系统提供的原生API(Application Programming Interface,应用程序编程接口)运行。快应用采用统一的标准进行开发,原生渲染,同时具备HTML5(Hyper Text Markup Language,超文本标记语言第5代)界面和原生应用的双重优点。快应用的框架可以深度集成于操作系统中,能够在操作系统层面进行操作,实现与其他应用服务之间的无缝衔接。开发者可以做到一次性开发即可在不同类型的设备上运行,并且无需用户进行下载和安装即可使用,即点即用。
[0088] 由于快应用的特殊性,快应用被期待完成更多的任务,实现更多的功能。目前,快应用的功能正在逐步完善中,本公开实施例就是提供了一种优化快应用的运行流畅度的应用程序运行方法,利用该应用程序运行方法,使快应用运行更加流畅,从而提高用户体验。
[0089] 图1是根据一示例性实施例示出的一种应用程序运行方法所涉及的系统架构的示意图。该系统架构包括:电子设备101和第一服务器102。其中,该电子设备101和第一服务器102之间可以网络链接或数据接口进行数据交互。
[0090] 电子设备101可以为手机、电脑、智能电视、可穿戴设备、平板电脑或其他电子设备101。电子设备101中可以安装第二目标应用程序,该第二目标应用程序上设置第一目标应用程序的应用接口,第二目标应用程序可以根据该应用接口与第一服务器102进行数据传输,其中,第一服务器102可以为该第一目标应用程序的后台服务器,电子设备101可以通过该第二目标应用程序实现数据传输、应用程序的画面渲染等功能。
[0091] 第二目标应用程序可以为电子设备101的操作系统中预置的应用程序,也可以为第三应用提供的应用程序。例如,第二目标应用程序可以为应用下载中心或者快应用中心等应用程序。第二目标应用程序中可以提供第一目标应用程序的应用接口。电子设备101可以通过该第一目标应用程序的应用接口,快速进入第一目标应用程序的应用界面。第一目标应用程序可以为电子设备101中未安装的任一应用程序。第一目标应用程序可以为快应用。例如,第一目标应用程序可以为游戏快应用、购物快应用、音乐快应用、外卖快应用、视频快应用、社交快应用或者浏览器快应用等为用户提供任一服务的快应用。
[0092] 该第一服务器102中可以存储第一目标应用程序的第一运行文件,设置该第一目标应用程序的应用接口。当电子设备101通过第二目标应用程序中第一目标应用程序的应用接口进入第一目标应用程序的应用界面时,电子设备101通过该第二目标应用程序,从该第一服务器102中加载该第一目标应用程序的第一运行文件,获取该第一运行文件中的第一代码,将该第一代码加载到第一目标线程中,通过第一目标线程运行该第一代码。
[0093] 该系统架构还包括第三服务器,该第三服务器为第二目标应用程序的后台服务器。当电子设备101通过第二目标应用程序中第一目标应用程序的应用接口进入第一目标应用程序的应用界面时,电子设备101还可以通过该第二目标应用程序,从该第三服务器中加载该第一目标应用程序的第一运行文件。相应的,第三服务器中可以事先存储第一目标应用程序的第一运行文件,第三服务器也可以在接收到第一目标应用程序的启动指令时,从第一服务器102中获取该第一目标应用程序的第一运行文件。其中,在本实现方式中,电子设备101和第三服务器之间可以通过网络链接或数据接口进行数据交互,第一服务器102和第三服务器之间也可以通过网络链接或数据接口进行数据交互。另外,电子设备101和第一服务器102之间可以通过网络链接或数据接口进行数据交互,电子设备101和第一服务器102之间也可以不建立连接。
[0094] 另外,电子设备101可以通过该第一目标应用程序的第一应用界面接收服务调用指令,根据该服务调用指令调用第二代码,该第二代码为该第一目标应用程序的目标服务对应的代码。该目标服务可以为登录服务、支付服务或拍摄服务等。其中,在一种可能的实现方式中,该第二代码可以为第一服务器102中事先存储的代码。在另一种可能的实现方式中,该第二代码可以为该第一服务器102从第三服务器中获取的代码。在另一种可能的实现方式中,该系统框架还包括第二服务器,该第二服务器为提供该目标服务的服务器,相应的,该第二代码可以为该第一服务器102从第三服务器中获取的代码。
[0095] 图2是根据本公开实施例示出的一种应用程序运行方法的流程图,参见图2,该方法包括以下步骤:
[0096] 在步骤S201中,在运行第一目标应用程序时,在目标线程中运行第一目标应用程序的第一代码。
[0097] 在步骤S202中,在该目标线程中运行该第一代码的过程中,当接收到调用该第一目标应用程序的目标服务的服务调用指令时,根据该服务调用指令,在该目标线程中调用该目标服务的第二代码。
[0098] 在步骤S203中,在该目标线程中运行该第二代码。
[0099] 在一种可能的实现方式中,该在该目标线程中运行该第二代码,包括:
[0100] 在该目标线程中暂停运行该第一代码,以及,在该目标线程中运行该第二代码。
[0101] 在另一种可能的实现方式中,该方法还包括:
[0102] 当该第二代码在该目标线程中运行完成时,继续在该目标线程中运行该第一代码。
[0103] 在另一种可能的实现方式中,该方法还包括:
[0104] 当接收到该第一目标应用程序的启动操作时,获取该第一目标应用程序的第一代码,以及获取该目标服务的第二代码;
[0105] 确定该目标线程;
[0106] 将该第一代码和该第二代码加载到该目标线程中。
[0107] 在另一种可能的实现方式中,该根据该服务调用指令,在该目标线程中调用该目标服务的第二代码,包括:
[0108] 当接收到调用该第一目标应用程序的目标服务的服务调用指令时,根据该服务调用指令,确定被调用的目标服务;
[0109] 在该目标线程中,确定该目标服务对应的第二代码。
[0110] 在另一种可能的实现方式中,该获取该第一目标应用程序的第一代码,包括:
[0111] 通过该第一目标应用程序的应用程序编程接口API,从该第一目标应用程序的第一服务器中加载该第一目标应用程序的第一运行文件;
[0112] 解析该第一运行文件,得到该第一目标应用程序的第一代码。
[0113] 在另一种可能的实现方式中,该获取该目标服务的第二代码,包括:
[0114] 通过该第一目标应用程序的API,加载该第一目标应用程序的目标服务的第二运行文件;
[0115] 解析该第二运行文件,得到该目标服务的第二代码。
[0116] 在另一种可能的实现方式中,该通过该第一目标应用程序的API,加载该第一目标应用程序的目标服务的第二运行文件,包括:
[0117] 通过该API,从该第一目标应用程序的第一服务器中加载该目标服务的第二运行文件;或者,
[0118] 通过该API,从该目标服务的第二服务器中加载该目标服务的第二运行文件。
[0119] 在另一种可能的实现方式中,该通过该API,从该第一目标应用程序的第一服务器中加载该目标服务的第二运行文件,包括:
[0120] 通过该API,从该第一服务器中加载该第一目标应用程序的第三运行文件,该第三运行文件中包括该第一目标应用程序的至少一个目标服务的运行文件;
[0121] 从该第三运行文件中获取该目标服务的第一运行文件。
[0122] 在另一种可能的实现方式中,该方法还包括:
[0123] 显示该第一目标应用程序的应用界面,该应用界面中包括至少一个服务按钮;
[0124] 当目标服务按钮被触发时,确定接收到调用该目标服务的服务调用指令。
[0125] 在另一种可能的实现方式中,该在运行第一目标应用程序时,在目标线程中运行第一目标应用程序的第一代码,包括:
[0126] 在运行该第一目标应用程序时,从线程池中选择该目标线程,在该目标线程中运行第一目标应用程序的第一代码;或者,
[0127] 在运行该第一目标应用程序时,生成该目标线程,在该目标线程中运行第一目标应用程序的第一代码。
[0128] 在另一种可能的实现方式中,该方法还包括:
[0129] 调用本地已安装的第二目标应用程序,该第二目标应用程序中包括本地未安装的该第一目标应用程序的应用接口;
[0130] 通过该第一目标应用程序的应用接口,在本地运行该第一目标应用程序。
[0131] 在本公开实施例中,通过在运行第一目标应用程序时,在目标线程中运行第一目标应用程序的第一代码;在该目标线程中运行该第一代码的过程中,当接收到调用该第一目标应用程序的目标服务的服务调用指令时,根据该服务调用指令,在该目标线程中运行该第二代码。通过将第一目标应用程序的第一代码和该第一目标应用程序的目标服务的第二代码运行在同一目标线程中,使得第一目标应用程序和目标服务之间的交互更加流畅,防止了第一目标应用程序在运行时出现卡顿的情况,从而提高了用户体验。
[0132] 图3是根据本公开实施例示出的一种应用程序运行方法的流程图,参见图3,在本实施例中,以获取第一代码和第二代码,将第一代码和第二代码添加到目标线程中为例进行说明,该方法包括以下步骤:
[0133] 在步骤S301中,当接收到第一目标应用程序的启动操作时,电子设备获取该第一目标应用程序的第一代码。
[0134] 第一代码为实现该第一目标应用程序功能的代码。例如,第一目标应用程序为游戏应用,则该第一代码可以为用于渲染该应用程序的游戏画面的代码,该第一代码可以为根据任一编程语言编写的代码,例如,该第一代码可以为JS(JavaScript,一种编程语言)代码。
[0135] 其中,第一目标应用程序可以为电子设备的任一快应用。电子设备可以通过已安装的第二目标应用程序启动该第一目标应用程序。相应的,电子设备通过第二目标应用程序启动该第一目标应用的过程可以通过以下步骤(1)-(2)实现:
[0136] (1)电子设备调用本地已安装的第二目标应用程序,该第二目标应用程序中包括本地未安装的该第一目标应用程序的应用接口。
[0137] 其中,该第二目标应用程序为电子设备中本地安装的应用程序。该应用接口可以为API接口。当电子设备接收到对第二目标应用程序的开启操作时,启动第二目标应用程序,例如,电子设备中显示该第二目标应用程序的程序标识,当电子设备接收到对该程序标识的点击操作时,确定接收到了该第二目标应用程序的开启操作,启动该第二目标应用程序。第二目标应用程序启动时,展示该第二目标应用程序的第二应用界面。该第二应用界面中显示该第二目标应用程序中包括的本地未安装的第一目标应用程序的应用接口。
[0138] (2)电子设备通过该第一目标应用程序的应用接口,在本地运行该第一目标应用程序。
[0139] 在本步骤中,电子设备接收第一目标应用程序的应用接口的触发操作,启动该触发操作对应的第一目标应用程序。当电子设备接收到第一目标应用程序的应用接口的触发操作时,调用该第二目标应用程序的第一服务器中提供的应用接口,通过该第一服务器中的应用接口,调用该第一目标应用程序的第一运行文件,解析该第一运行文件,得到第一目标应用程序的第一代码,在目标线程中运行该第一代码,实现在本地运行该第一目标应用程序。其中,该第一运行文件可以为该第一目标应用程序的任一可第三运行文件,例如,该第三运行文件可以为后缀名为.rpk的文件等。
[0140] 在本实现方式中,电子设备通过调用本地下载的第二目标应用程序中的应用接口,调用第一目标应用程序的运行文件,通过本地的目标线程执行该第一目标应用程序的运行文件,从而在电子设备中执行该未下载的第一目标应用程序,使得电子设备中不需要下载第一目标应用程序的安装包,也不需要在电子设备上安装第一目标应用程序,即可运行该第一目标应用程序,节省了电子设备的本地存储空间,且由于直接触发应用接口就能运行第一目标应用程序,从而能够提升用户的体验度。
[0141] 其中,该第一代码为电子设备对第一运行文件进行解析得到的,相应的,电子设备获取第一代码的过程可以为:电子设备通过该第一目标应用程序的应用程序编程接口API,从该第一目标应用程序的第一服务器中加载该第一目标应用程序的第一运行文件;解析该第一运行文件,得到该第一目标应用程序的第一代码。
[0142] 电子设备可以通过该第二目标应用程序调用该第一目标应用程的API接口。相应的,在本步骤之前,开发人员可以设计第二目标应用程序可调用的API接口,以便在本步骤中,电子设备可以为根据该第二目标应用程序调用该第一目标应用程序的API接口。
[0143] 在一种可能的实现方式中,该第一服务器中可以事先存储第一目标应用程序的第一运行文件,相应的,开发人员可以事先通过该第一目标应用程序的应用接口,将第一目标应用程序的第一运行文件上传至第一服务器中。在本步骤中,电子设备启动第一目标应用程序时,可以通过第二目标应用程序从该第一服务器的应用接口处直接从第一服务器中调用该第一运行文件。其中,该第一运行文件可以为开发人员编写完成时,上传至该第一服务器中的运行文件。
[0144] 在本实现方式中,开发人员事先将第一目标应用程序的第一运行文件上传至第一服务器中,当电子设备通过第二目标应用程序启动该第一目标应用程序时,电子设备可以通过第二目标应用程序的API接口直接从该第一服务器中获取该第一目标应用程序的第一运行文件,从而不需要再从第一目标应用程序对应的第三服务器中获取该第一运行文件,方便开发人员上传该第一运行文件,从而方便开发人员对第一运行文件进行更新调整,加快了第一目标应用程序的开发效率,并且,无需下载第一目标应用程序,简化了电子设备运行第一目标应用程序的程序,提高了第一目标应用程序的启动速度,进而提升了用户体验。
[0145] 在另一种可能的实现方式中,电子设备可以通过该第二目标应用程序,调用该第二目标应用程序的第三服务器的应用接口,从该第三服务器中,获取该第一运行文件。相应的,该第一运行文件可以为开发人员编写完成时,上传至该第一目标应用程序对应的第一服务器中,再由第三服务器根据该应用接口从第一服务器中获取的运行文件。其中,第三服务器可以在本步骤之前,事先从第一服务器中获取该第一目标应用程序的第一运行文件,将该第一运行文件存储在第三服务器本地;第三服务器也可以在接收到开启该第一目标应用程序的开启指令时,从第一服务器中调用该第一运行文件。在本公开实施例中,对此不作具体限定。
[0146] 在本实现方式中,电子设备从第二目标应用程序对应的第三服务器中,获取该第一目标应用程序对应的第一运行文件,将第一运行文件存储在第三服务器中,从而电子设备可以只与第三服务器建立网络连接,净化了电子设备的网络环境。
[0147] 在步骤S302中,电子设备获取该目标服务的第二代码。
[0148] 其中,电子设备获取该第一目标应用程序涉及的服务的第二运行文件,从该第二运行文件中解析出第二代码。由于该目标服务可以为第一目标应用程序在运行过程中产生的服务,该目标服务还可以为第一目标应用程序调用的其他应用程序实现的服务,则在本步骤中,电子设备根据该第一目标应用程序获取的第二运行文件可以为第一目标应用程序的运行文件,也可以为其他应用程序的运行文件。
[0149] 在一种可能的实现方式中,该目标服务的第二运行文件可以为该第一目标应用程序的第一运行文件中的运行文件,相应的,该第一运行文件包括该第一目标应用程序运行所需要的第一代码和目标服务对应的第二运行文件。则在本步骤中,电子设备可以从已获取的第一目标应用程序的第一运行文件中提取该目标服务的第二运行文件。
[0150] 在本实现方式中,目标服务为第一目标应用程序运行过程中产生的服务,该目标服务可以为第一目标应用程序携带的服务,电子设备在获取的第一目标应用程序对应的第一运行文件中包括该目标服务对应的第二运行文件,从而在本步骤中,电子设备直接从已获取的第一运行文件中提取该第二运行文件,不需要电子设备再从服务器中获取该第二运行文件,提高了获取第二运行文件的速度,从而简化了目标服务的实现过程,提高了用户体验。
[0151] 在另一种可能的实现方式中,电子设备还可以在接收到目标服务的服务调用指令时,根据该服务调用指令,通过第一服务器的API,从该目标服务对应的服务器中调用该第二运行文件。第一种实现方式,该目标服务可以为第一目标应用程序在运行过程中产生的目标服务,该目标服务可以为电子设备从该第一目标应用程序对应的第三服务器中调用的第二运行文件,相应的,本步骤可以为:电子设备通过该API,从该第一目标应用程序的第三服务器中加载该目标服务的第二运行文件。例如,该目标服务为该第一目标应用程序的登录服务,则电子设备可以从该第一目标应用程序对应的第三服务器中,获取该登录服务对应的第二运行文件。
[0152] 在本实现方式中,电子设备根据该第一目标应用程序的目标服务,从该第一目标应用程序的第一服务器中获取该目标服务对应的第二运行文件,使得电子设备可以根据该第二运行文件提供目标服务,而无需下载该目标服务的第二运行文件,从而节省了电子设备的存储空间。
[0153] 需要说明的一点是,电子设备从第一服务器中获取该第二运行文件时,可以直接从该第一服务器中获取该目标服务对应的第二运行文件;电子设备还可以从第一服务器中获取该第一目标应用程序的至少一个目标服务的运行文件,从该至少一个目标服务的运行文件中,获取该目标服务的第二运行文件。相应的,本步骤还可以为:电子设备通过该API,从该第一目标应用程序的第一服务器中加载该第一目标应用程序的第三运行文件,该第三运行文件中包括该第一目标应用程序的至少一个目标服务的运行文件;电子设备从该第三运行文件中获取该目标服务的第二运行文件。
[0154] 在本实现方式中,电子设备从第一目标应用程序对应的第一服务器中,获取至少一个目标服务的第三运行文件,从该第三运行文件中,获取当前目标服务的第二运行文件,从而使电子设备可以通过一次获取操作,获取第一目标应用程序的至少一个目标服务的运行文件,以便电子设备后续可以直接从该至少一个目标服务的运行文件中获取当前目标服务的第二运行文件,节省了后续获取目标文件的第二运行文件的时间,提高了第一目标应用程序的流畅度,提高了用户体验。
[0155] 第二种实现方式,该目标服务可以为第一目标应用程序在运行过程中调用的其他应用程序的目标服务,该目标服务可以为电子设备从其他应用程序的第二目标应用程序对应的第二服务器中调用的第二运行文件,相应的,本步骤可以为:电子设备通过该API,从该目标服务对应的第二服务器中加载该目标服务的第二运行文件。例如,该目标服务可以为支付类应用程序对应的支付服务,则在本步骤中,电子设备可以从该支付类应用程序对应的第二服务器中,获取该支付服务对应的第二运行文件。
[0156] 在本实现方式中,电子设备通过该第一目标应用程序对应的API调用第二服务器中目标服务的第二运行文件,从而实现为电子设备提供至少一种服务,丰富了第一目标应用程序中服务的类型,从而提高了用户体验。
[0157] 电子设备获取到第二运行文件后,解析该第二运行文件,得到该目标服务的第二代码。其中,第二运行文件也可以为后缀名为.rpk的文件,第二代码可以为使用与第一代码相同的编程语言编写的代码,该第二代码也可以为使用与第一代码不同的编程语言编写的代码,例如,第二代码和第一代码可以为相同的变成语言编写的代码,例如,该第二代码和第一代码可以为JS代码。
[0158] 在步骤S303中,电子设备确定目标线程。
[0159] 该目标线程可以为电子设备在运行第一代码时生成的目标线程;该目标线程还可以为电子设备从线程池中获取的目标线程。
[0160] 相应的,在一种可能的实现方式中,在运行该第一目标应用程序时,电子设备从线程池中选择该目标线程,在该目标线程中运行第一目标应用程序的第一代码。
[0161] 在本步骤之前,电子设备可以生成多个线程,将该多个线程组成线程池。该线程池可以存储在电子设备本地,该线程池也可以存储在其他服务器中。当该线程池为本地存储的线程池时,电子设备可以从本地存储的线程池中选择目标线程。当该线程池为其他服务器中的线程池时,电子设备可以向其他服务器发送获取请求,其他服务器接收到该获取请求时,根据该获取请求从线程池中获取目标线程,将该目标线程发送给电子设备,电子设备接收该其他服务器发送的目标线程。
[0162] 在本实现方式中,电子设备直接从已有的线程池中获取目标线程,不需要重新生成线程,节省了线程的生成时间,从而提高了第一目标应用程序的启动速度,从而提高了用户体验。
[0163] 在另一种可能的实现方式中,在运行该第一目标应用程序时,电子设备生成该目标线程,在该目标线程中运行第一目标应用程序的第一代码。
[0164] 在本实现方式中,电子设备根据将要运行的第一代码,生成该目标线程。无需实现存储多个线程,从而节省了电子设备的存储空间。
[0165] 在步骤S304中,电子设备将第一代码和第二代码加载到目标线程中。
[0166] 在本步骤中,电子设备将获取到的第一代码和第二代码加载到同一目标线程中。
[0167] 在本实现方式中,电子设备在运行第一目标应用程序时,获取第一目标应用程序的第一代码和该第一目标应用程序的目标服务的第二代码,将该第一代码和第二代码添加到同一目标线程中,以便在电子设备运行第一目标应用程序时,可以直接从该目标线程中调用第二代码,在该目标线程中运行该第二代码,使得第一目标应用程序和目标服务之间的交互更加流畅,防止了第一目标应用程序在运行时出现卡顿的情况,从而提高了用户体验。
[0168] 图4是根据本公开实施例示出的一种应用程序运行方法的流程图,参见图4,该方法包括以下步骤:
[0169] 在步骤S401中,在运行第一目标应用程序时,电子设备在目标线程中运行第一目标应用程序的第一代码。
[0170] 电子设备将第一代码和第二代码添加到同一目标线程后,可以在该目标线程中运行该第一目标应用程序的第一代码。
[0171] 在步骤S402中,在该目标线程中运行该第一代码的过程中,当接收到调用该第一目标应用程序的目标服务的服务调用指令时,电子设备根据该服务调用指令,在该目标线程中调用该目标服务的第二代码。
[0172] 电子设备通过目标线程运行该第一应用程序的代码的过程中,可以接收用于调用目标服务的服务调用指令。该目标服务可以为第一目标应用程序在运行过程中产生的服务,该目标服务还可以为第一目标应用程序调用的其他应用程序的服务。例如,该目标服务可以为第一目标应用程序的登录服务,该目标服务还可以为第一目标应用程序调用的支付服务等。
[0173] 相应的,在一种可能的实现方式中,该第一代码包括用于触发该服务调用指令的代码,则该电子设备接收到调用该第一目标应用程序的目标服务的服务调用指令的过程可以为:电子设备通过目标线程运行该第一目标应用程序时,通过运行的第一代码触发该服务调用指令。例如,该第一目标应用程序为游戏应用,该第一代码为用于渲染游戏画面的代码,则开启游戏应用时,通过运行第一代码渲染游戏启动画面,当游戏启动画面渲染完成时,需要触发该游戏应用的登录服务调用指令,触发该游戏登录服务,则该第一代码中包括用于渲染启动画面的代码和用于启动登录服务的代码,当该用于渲染启动画面的代码运行完成时,运行用于启动登录服务的代码,电子设备确定接收到服务调用指令,通过该服务调用指令调用游戏应用的登录服务。
[0174] 在本实现方式中,通过在第一代码中添加用于触发服务调用指令的代码,从而电子设备在运行第一代码时,可以直接触发该服务调用指令,不需要通过其他操作触发服务调用指令,使得第一目标应用的运行更加流畅,提高了用户体验。
[0175] 在另一种可能的实现方式中,该第一代码中不包括用于触发该服务调用指令的代码,电子设备通过接收用户触发调用指令的操作,确定触发调用指令。则该电子设备接收到调用该第一目标应用程序的目标服务的服务调用指令的过程可以通过以下步骤(1)-(2)实现,包括:
[0176] (1)电子设备显示该第一目标应用程序的第一应用界面,该第一应用界面中包括至少一个服务按钮。
[0177] 在本步骤中,电子设备通过运行第一代码,将第一代码产生的第一应用界面渲染在电子设备的显示界面中,得到第一应用界面。该第一应用界面可以为第一目标应用的主界面也可以为该第一目标应用的任一功能界面。该第一应用界面中可以包括至少一个服务按钮,该至少一个服务按钮用于为电子设备提供至少一种服务。例如,该至少一个服务按钮可以为支付按钮、账号切换按钮、登录按钮等,在本公开实施例中,对该至少一个服务按钮不作具体限定。
[0178] 另外,该至少一个服务按钮可以渲染在该第一应用界面的任一位置,该至少一个服务按钮位置可以根据需要进行设置并更改,在本公开实施例中,对该至少一个服务按钮的位置不作具体限定。
[0179] (2)当目标服务按钮被触发时,电子设备确定接收到调用该目标服务的服务调用指令。
[0180] 在本步骤中,电子设备接收按钮触发操作,根据该按钮触发操作确定被触发的目标按钮,从而接收该目标按钮的服务调用指令。其中,该按钮触发操作可以为点击操作,相应的,当电子设备接收到用户触发的在服务按钮的点击操作时,确定接收到按钮触发操作。
[0181] 在本实现方式中,通过在第一应用界面中渲染至少一个服务按钮,从而为电子设备提供至少一种服务,通过接收目标服务按钮的触发操作,确定目标服务,从而实现为电子设备提供至少一种服务,丰富了第一目标应用程序中服务的类型,从而提高了用户体验。
[0182] 在步骤S403中,电子设备在该目标线程中暂停运行该第一代码。
[0183] 参见图5,电子设备获取到第二代码后,在目标线程中运行该第二代码,一个线程只能同时运行一条代码。因此,在本步骤中,电子设备在目标线程中暂停运行该第一代码。例如,该第一代码为用于渲染第一目标应用程序的显示画面的代码,则电子设备在接收到目标服务对应第二代码时,在目标线程中暂停运行该第一代码,电子设备中显示的第一目标应用程序的应用界面停留在暂停运行第一代码的时刻。
[0184] 在本实现方式中,通过暂停运行目标线程中的第一代码,使得第一目标应用程序的第一代码和目标服务的第二代码可以优化现行在同一目标线程中,使得第一目标应用程序在调用目标服务时,可以运行的更加流畅。
[0185] 在步骤S404中,电子设备在该目标线程中运行该第二代码。
[0186] 在本步骤中,继续参见图5,电子设备目标线程中暂停运行第一代码,将第二代码添加到该目标线程中,执行该第二代码。例如,该第一代码为用于渲染第一目标应用程序的显示画面的代码,第二代码为支付服务对应的代码,则电子设备在接收到目标服务对应第二代码时,在目标线程中暂停运行该第一代码,将该第二代码添加到该目标线程中,开始运行该第二代码,电子设备中显示的第一目标应用程序的应用界面停留在暂停运行第一代码的时刻,以及显示该支付服务对应的支付界面,实现为第一目标应用程序提供支付服务。
[0187] 需要说明的一点是,当该第二代码在该目标线程中运行完成时,电子设备继续在该目标线程中运行该第一代码。
[0188] 另外,当接收到第一目标应用程序的退出操作时,电子设备停止运行该第一目标应用程序,释放该第一目标应用程序调用的目标线程。其中,电子设备释放该目标线程的方式可以为:删除该目标线程或者将该目标线程返回线程池中,在本公开实施例中,对此不作具体限定。
[0189] 需要说明的另一点是,电子设备在运行第一目标应用程序时,可能需要运行多条代码才能实现该第一目标应用程序的运行,该多条代码可以分别运行在不同的目标线程中,当接收到运行目标服务对应的第二代码时,可以将该第二代码运行在该多个线程中的任一线程中,也可以将该第二代码运行在指定的目标线程中,其中,该指定的目标线程可以为用户事先标记的目标线程,该目标线程还可以为根据目标服务确定的目标线程。在本公开实施例中,对此不作具体限定。
[0190] 在本公开实施例中,通过在运行第一目标应用程序时,在目标线程中运行第一目标应用程序的第一代码;在该目标线程中运行该第一代码的过程中,当接收到调用该第一目标应用程序的目标服务的服务调用指令时,根据该服务调用指令,在该目标线程中运行该第二代码。通过将第一目标应用程序的第一代码和该第一目标应用程序的目标服务的第二代码运行在同一目标线程中,使得第一目标应用程序和目标服务之间的交互更加流畅,防止了第一目标应用程序在运行时出现卡顿的情况,从而提高了用户体验。
[0191] 本公开实施例中涉及的快应用是一种基于电子设备的硬件平台的新型应用形态,能够基于操作系统提供的原生API运行。
[0192] 快应用采用统一的标准进行开发,原生渲染,无需安装,即点即用,又兼具原生应用体验(性能、系统整合、交互等)。快应用的框架可以深度集成于操作系统中,能够在操作系统层面进行操作,实现与其他应用服务之间的无缝衔接。开发者可以做到一次性开发即可在不同类型的电子设备上运行。快应用在诞生之初就在开发规范、能接入、开发者服务等层面实现了电子设备厂商间的标准化统一,极大地降低开发者的适配成本。
[0193] 与传统应用相比,快应用具备如下特点:
[0194] Instant(即时):即点即用,用户无需等待;
[0195] Everywhere(随处可见):与电子设备的使用场景深度整合,入口无处不在,如搜索引擎、智能助手、智能推荐、应用市场、浏览器等;
[0196] Efficient(高效):准前端的开发方式,效率高。
[0197] 图6是根据一示例性实施例示出的一种快应用框架600的框图,该快应用框架包括:场景入口620、快应用引擎640和操作系统(Operating System,OS)基础设施及硬件660。
[0198] 场景入口620包括负一屏、全局搜索、屏、桌面、应用市场、浏览器和二维码中的至少一种。场景入口620的外在展现形式可以为页面形式和卡片形式。
[0199] 快应用引擎640包括前端框架641、通用场景642、轻量化场景643、嵌入式SDK(Software Development Kit,软件开发工具包)644和业务接入645。
[0200] 其中,前端框架641包括MVVM(Model-View-View-Model,模型-视图-视图-模型)、V-DOM(Virtual-Document  Object  Model,虚拟文档对象模型)、路由、基础API(Application Programming Interface,应用程序编程接口)、业务API、UI(User Interface,用户界面)组件、路由等;
[0201] 通用场景642和轻量化场景643包括JavaScript(一种编程语言)引擎、标准渲染引擎、极速渲染引擎、端--芯加速、安全机制、新兴场景如AI(Artificial Intelligence,人工智能)、AR(Augmented Reality,增强现实)等、系统整合(应用管理、权限管理等);
[0202] 业务接入645包括推送、账号/支付等。
[0203] OS基础设施及硬件660包括:图形库、原生控件、系统服务和GPU(Graphics Processing Unit,图形处理器)/NPU(Neural-network Processing Unit,嵌入式神经网络处理器)等。
[0204] 从执行路径层面,有标准的HTML(Hyper Text Markup Language,超文本标记语言)5方式支撑通用的Web(World Wide Web,万维网)场景,以及JS(JavaScript,一种编程语言)与Native(原生)相结合的方式,支撑更轻量、更快速的体验。
[0205] 下面将按3个方面简要介绍快应用引擎的架构。
[0206] 1)应用开发:
[0207] 快应用的前端设计借鉴并整合了主流前端框架的设计思路:以组件化的方式构建应用,以数据绑定为核心的MVVM设计模式,以V-DOM的方式提升性能,同时选择了简洁清晰的类Vue(虚拟机脱壳引擎)的模板。同时对布局方面做了相应精简。从新的应用形态、映射原生UI、能力开放的度,需要定义一套组件与API规范,方便开发这种快速开发应用。
[0208] 2)系统整合:
[0209] 快应用作为完整的应用形态,可以与系统深入整合,如同原生应用一样运行,以及与系统交互。快应用目前有两种形态:全屏方式的独立应用形态与嵌入方式的卡片形态。在独立应用形态下,给用户的体验就像原生的应用程序,有完整的生命周期管理,页面管理,路由等。快应用可以寄生于安卓的Activity(行为),页面寄生于Fragment(碎片),并通过独立的后台Service(服务)进行实例的管控。卡片形态则是另外一种形态,通过嵌入式SDK(Software Development Kit,软件开发工具包)作为一个独立的局部控件嵌入到系统的各个角落,轻量化的展现动态内容。在安全隔离方面,可通过沙盒机制,进程隔离,权限控制,并结合操作系统层的支持做到较好的安全保障。
[0210] 3)性能体验及新兴场景,如JavaScript引擎、渲染引擎、端-云-芯加速、新兴场景等:
[0211] 在交互体验、资源开销和稳定性等方面,快应用通过引入原生渲染路径,进而实现前端开发方式与原生渲染及平台能力的有效组合。
[0212] 不同于其它的应用层的跨平台框架,快应用植根于电子设备的操作系统,可实现从芯片、操作系统与云的深度整合。利用端和云的结合以启动性能加速为例,通过云和端的协同渲染,网络链路层的优化可以大大加速快应用启动速度。同时可以整合硬件平台的特有能力,进一步提升体验。例如可以结合电子设备AI芯片,将NPU(Neural-network Processing Unit,网络处理器)的算力整合到快应用引擎中来,使得AI场景(人脸识别、图像超分等)在端侧可以低延时、高性能的执行,同时又有效保护了用户的隐私,并节省带宽。
[0213] 图7是根据一示例性实施例示出的一种快应用的启动流程图,包括:
[0214] 1)首次启动时,用户点击触发下载快应用的程序包,同时进行快应用引擎的初始化相关工作。当整个快应用的程序包下载与校验完成后,需要展示的第一个页面的JavaScript文件才会被加载并开始渲染。
[0215] 2)页面渲染包括JavaScript加载、页面与JavaScript框架逻辑的执行、布局的运算,最终到原生UI控件的绘制。其中,页面内逻辑执行时会有一次或多次的网络请求,网络请求返还的数据驱动页面的再次渲染,直至首屏页面的内容完全展示。
[0216] 这里的网络请求、JavaScript执行、排版与绘制并非简单的串行关系,而是并行化地交织在一起,影响着整个页面的渲染性能,并与页面设计的逻辑、网络状况与设备运行的状态强相关。
[0217] 由于快应用的特殊性,快应用被期待完成更多的任务,实现更多的功能。目前,快应用的功能正在逐步完善中,本公开实施例就是提供了一种快应用的新功能,利用该新功能,快应用能够实现与用户的语音交互,扩展了快应用的功能,提高了快应用的处理能力以及实用性。
[0218] 图8是根据一示例性实施例示出的一种应用程序运行装置的结构示意图。如图8所示,该应用程序运行装置包括:
[0219] 第一运行模块801,被配置为在运行第一目标应用程序时,在目标线程中运行第一目标应用程序的第一代码;
[0220] 第一调用模块802,被配置为在该目标线程中运行该第一代码的过程中,当接收到调用该第一目标应用程序的目标服务的服务调用指令时,根据该服务调用指令,在该目标线程中调用该目标服务的第二代码;
[0221] 第二运行模块803,被配置为在该目标线程中运行该第二代码。
[0222] 在另一种可能的实现方式中,该第二运行模块803,还被配置为在该目标线程中暂停运行该第一代码,以及,在该目标线程中运行该第二代码。
[0223] 在另一种可能的实现方式中,该第一运行模块801,还被配置为当该第二代码在该目标线程中运行完成时,继续在该目标线程中运行该第一代码。
[0224] 在另一种可能的实现方式中,该装置还包括:
[0225] 获取模块,被配置为当接收到该第一目标应用程序的启动操作时,获取该第一目标应用程序的第一代码,以及获取该目标服务的第二代码;
[0226] 第一确定模块,被配置为确定该目标线程;
[0227] 加载模块,被配置为将该第一代码和该第二代码加载到该目标线程中。
[0228] 在另一种可能的实现方式中,该第一调用模块802,还被配置为当接收到调用该第一目标应用程序的目标服务的服务调用指令时,根据该服务调用指令,确定被调用的目标服务;在该目标线程中,确定该目标服务对应的第二代码。
[0229] 在另一种可能的实现方式中,该获取模块,还被配置为通过该第一目标应用程序的应用程序编程接口API,从该第一目标应用程序的第一服务器中加载该第一目标应用程序的第一运行文件;解析该第一运行文件,得到该第一目标应用程序的第一代码。
[0230] 在另一种可能的实现方式中,该获取模块,还被配置为通过该第一目标应用程序的API,加载该第一目标应用程序的目标服务的第二运行文件;解析该第二运行文件,得到该目标服务的第二代码。
[0231] 在另一种可能的实现方式中,该获取模块,还被配置为通过该API,从该第一目标应用程序的第一服务器中加载该目标服务的第二运行文件;或者,通过该API,从该目标服务的第二服务器中加载该目标服务的第二运行文件。
[0232] 在另一种可能的实现方式中,该获取模块,还被配置为通过该API,从该第一服务器中加载该第一目标应用程序的第三运行文件,该第三运行文件中包括该第一目标应用程序的至少一个目标服务的运行文件;从该第三运行文件中获取该目标服务的第一运行文件。
[0233] 在另一种可能的实现方式中,该装置还包括:
[0234] 显示模块,被配置为显示该第一目标应用程序的应用界面,该应用界面中包括至少一个服务按钮;
[0235] 第二确定模块,被配置为当目标服务按钮被触发时,确定接收到调用该目标服务的服务调用指令。
[0236] 在另一种可能的实现方式中,该第一运行模块801,还被配置为在运行该第一目标应用程序时,从线程池中选择该目标线程,在该目标线程中运行第一目标应用程序的第一代码;或者,在运行该第一目标应用程序时,生成该目标线程,在该目标线程中运行第一目标应用程序的第一代码。
[0237] 在另一种可能的实现方式中,该装置还包括:
[0238] 第二调用模块,包配置为调用本地已安装的第二目标应用程序,该第二目标应用程序中包括本地未安装的该第一目标应用程序的应用接口;
[0239] 第三运行模块,被配置为通过该第一目标应用程序的应用接口,在本地运行该第一目标应用程序。
[0240] 在本公开实施例中,通过在运行第一目标应用程序时,在目标线程中运行第一目标应用程序的第一代码;在该目标线程中运行该第一代码的过程中,当接收到调用该第一目标应用程序的目标服务的服务调用指令时,根据该服务调用指令,在该目标线程中运行该第二代码。通过将第一目标应用程序的第一代码和该第一目标应用程序的目标服务的第二代码运行在同一目标线程中,使得第一目标应用程序和目标服务之间的交互更加流畅,防止了第一目标应用程序在运行时出现卡顿的情况,从而提高了用户体验。
[0241] 需要说明的是:上述实施例提供的应用程序运行装置在应用程序运行时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的应用程序运行装置与应用程序运行方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0242] 图9是根据一示例性实施例示出的一种电子设备900的框图。例如,电子设备900可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
[0243] 参见图9,电子设备900可以包括以下一个或多个组件:处理组件902,存储器904,电源组件906,多媒体组件908,音频组件910,输入/输出(I/O)的接口912,传感器组件914,以及通信组件916。
[0244] 处理组件902通常控制电子设备900的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件902可以包括一个或多个处理器920来执行指令,以完成上述应用程序运行方法的全部或部分步骤。此外,处理组件902可以包括一个或多个模块,便于处理组件902和其他组件之间的交互。例如,处理组件902可以包括多媒体模块,以方便多媒体组件908和处理组件902之间的交互。
[0245] 存储器904被配置为存储各种类型的数据以支持在电子设备900的操作。这些数据的示例包括用于在电子设备900上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器904可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
[0246] 电源组件906为电子设备900的各种组件提供电力。电源组件906可以包括电源管理系统,一个或多个电源,及其他与为电子设备900生成、管理和分配电力相关联的组件。
[0247] 多媒体组件908包括在所述电子设备900和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件908包括一个前置摄像头和/或后置摄像头。当电子设备900处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
[0248] 音频组件910被配置为输出和/或输入音频信号。例如,音频组件910包括一个麦克(MIC),当电子设备900处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器904或经由通信组件916发送。在一些实施例中,音频组件910还包括一个扬声器,用于输出音频信号。
[0249] I/O接口912为处理组件902和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
[0250] 传感器组件914包括一个或多个传感器,用于为电子设备900提供各个方面的状态评估。例如,传感器组件914可以检测到电子设备900的打开/关闭状态,组件的相对定位,例如所述组件为电子设备900的显示器和小键盘,传感器组件914还可以检测电子设备900或电子设备900一个组件的位置改变,用户与电子设备900接触的存在或不存在,电子设备900方位或加速/减速和电子设备900的温度变化。传感器组件914可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件914还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件914还可以包括加速度传感器,陀螺仪传感器,磁传感器压力传感器或温度传感器。
[0251] 通信组件916被配置为便于电子设备900和其他设备之间有线或无线方式的通信。电子设备900可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件916经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件916还包括近场通信(NFC)模块,以促进短程通信。
[0252] 在示例性实施例中,电子设备900可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程阵列(FPGA)、控制器微控制器微处理器或其他电子元件实现,用于执行上述应用程序运行方法。
[0253] 在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器904,上述指令可由电子设备900的处理器920执行以完成上述方法。例如,非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
[0254] 本公开还提供了一种计算机程序产品,所述计算机程序产品包括一个或多个计算机程序,所述计算机程序被处理器执行时,用于实现上述各个方法实施例提供的应用程序运行方法。
[0255] 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0256] 以上所述仅为本公开的可选实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈