CN113467854A - 应用程序启动方法、装置、电子设备及存储介质 - Google Patents
应用程序启动方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113467854A CN113467854A CN202110611062.6A CN202110611062A CN113467854A CN 113467854 A CN113467854 A CN 113467854A CN 202110611062 A CN202110611062 A CN 202110611062A CN 113467854 A CN113467854 A CN 113467854A
- Authority
- CN
- China
- Prior art keywords
- engine
- target
- engines
- state
- cache pool
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 70
- 230000008569 process Effects 0.000 claims abstract description 16
- 238000012544 monitoring process Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 7
- 238000005516 engineering process Methods 0.000 abstract description 10
- 238000004891 communication Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 9
- 230000006378 damage Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000011161 development Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000005236 sound signal Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
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/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本公开是关于一种应用程序启动方法、装置、电子设备及存储介质,其方法包括:在目标应用程序启动过程中,当检测到所述目标应用程序进入目标页面时,如果所述终端的缓存池中不存在处于已就绪状态的JS引擎,创建目标JS引擎;其中,所述已就绪状态的JS引擎为被创建且未被使用的JS引擎;将所述目标JS引擎存储到所述终端的缓存池中,并通过所述目标JS引擎加载所述目标页面对应的JS Bundle文件。本公开通过创建目标JS引擎,并将创建的目标JS引擎存储到终端的缓存池中,以便通过该目标JS引擎加载目标页面对应的JS Bundle文件,这样可以很好的解决相关技术中因使用同一个JS引擎可能导致的页面白屏问题。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种应用程序启动方法、装置、电子设备及存储介质。
背景技术
React Native(简称RN)是目前比较常用的一种移动端混合框架,通常应用在移动端,由于其可以在Android和iOS等平台直接使用,有着强大的跨平台特性。原生APP(Application,应用程序)的开发中通常会混合使用React Native开发,通过React Native开发的模块,在进行调试之前需要先打成JS Bundle文件,之后app才能对其进行加载和显示。
而在通过React Native开发的app在首次启动时,需要解析和加载整个JS Bundle文件,而解析和加载JS Bundle文件是一个比较耗时的操作。现有技术,在通过JS引擎来加载JS Bundle文件时,容易造成业务间加载相同的依赖库时的冲突,使得从加载JS Bundle文件到React Native将对应的React Native页面渲染出来的过程中,通常会出现页面白屏的问题。
发明内容
为克服相关技术中存在的问题,本公开提供一种应用程序启动方法、装置、电子设备及存储介质。
根据本公开实施例的第一方面,提供一种应用程序启动方法,包括:
在目标应用程序启动过程中,当检测到所述目标应用程序进入目标页面时,如果所述终端的缓存池中不存在处于已就绪状态的JS引擎,创建目标JS引擎;其中,所述已就绪状态的JS引擎为被创建且未被使用的JS引擎;
将所述目标JS引擎存储到所述终端的缓存池中,并通过所述目标JS引擎加载所述目标页面对应的JS Bundle文件。
可选地,所述方法还包括:
获取所述缓存池中已占用状态的JS引擎的数量,所述已占用状态的JS引擎为正在被使用的JS引擎;
在所述已占用状态的引擎的数量大于第一预设阈值时,如果所述缓存池中存在已释放状态的JS引擎,将所述已释放状态的JS引擎销毁;其中,所述已释放状态的JS引擎为被使用后的JS引擎;
在所述已占用状态的引擎的数量不大于第一预设阈值时,执行所述创建目标JS引擎的步骤。
可选地,所述方法还包括:
在检测到所述目标JS引擎创建完成时,将所述目标JS引擎的状态设置为已就绪状态;
在检测到所述目标JS引擎加载相应的JS Bundle文件时,将所述目标引擎的状态从已就绪状态调整为已占用状态。
可选地,所述方法还包括:
在检测到所述目标应用程序退出所述目标页面时,获取所述目标JS引擎的使用状态;
在所述目标JS引擎的使用状态为已释放状态时,将所述目标JS引擎销毁。
可选地,所述方法还包括:
如果所述终端的缓存池中存在处于已就绪状态的JS引擎,获取所述缓存池中已就绪状态的JS引擎的数量;
在所述已就绪状态的引擎的数量大于第二预设阈值时,获取所述已就绪状态的JS引擎的创建时长;
销毁所述缓存池中创建时长大于预设时长的已就绪的JS引擎。
可选地,所述方法还包括:
监听所述终端的内存提示信息;
在接收到包含内存不足的提示信息时,如果所述缓存池中存在已占用状态的JS引擎,将所述缓存池中已占用状态的JS引擎销毁;
在所述缓存池中存在已就绪状态的JS引擎且已就绪状态的JS引擎的数量大于第三阈值时,将所述缓存池中处于已就绪状态的JS引擎进行销毁处理,以使所述缓存池中处于已就绪状态的JS引擎的数量不大于第三阈值。
可选地,所述方法还包括:
监测是否接收到服务器下发的多引擎配置信息;
当接收到所述服务器下发的多引擎配置信息时,创建目标JS引擎。
根据本公开实施例的第二方面,提供一种应用程序启动装置,应用于终端,所述装置包括:
引擎创建模块,被配置为在目标应用程序启动过程中,当检测到所述目标应用程序进入目标页面,且在所述终端的缓存池中不存在处于已就绪状态的JS引擎时,创建目标JS引擎;其中,所述已就绪状态的JS引擎为被创建且未被使用的JS引擎;
存储模块,被配置为将所述目标JS引擎存储到所述终端的缓存池中;
加载模块,被配置为通过所述目标JS引擎加载所述目标页面对应的JS Bundle文件。可选地,其特征在于,所述装置还包括:
数量获取模块,被配置为获取所述缓存池中已占用状态的JS引擎的数量,所述已占用状态的JS引擎为正在被使用的JS引擎;
引擎销毁模块,被配置为在所述已占用状态的引擎的数量大于第一预设阈值,且在所述缓存池中存在已释放状态的JS引擎时,将所述已释放状态的JS引擎销毁;其中,所述已释放状态的JS引擎为被使用后的JS引擎;
所说引擎创建模块,还被配置为在所述已占用状态的引擎的数量不大于第一预设阈值时,执行所述创建目标JS引擎的步骤。
可选地,所述装置还包括:
状态设置模块,被配置为在检测到所述目标JS引擎创建完成时,将所述目标JS引擎的状态设置为已就绪状态;
状态调整模块,被配置为在检测到所述目标JS引擎加载相应的JS Bundle文件时,将所述目标引擎的状态从已就绪状态调整为已占用状态。
可选地,所述装置还包括:
状态获取模块,被配置为在检测到所述目标应用程序退出所述目标页面时,获取所述目标JS引擎的使用状态;
所说引擎销毁模块,还被配置为在所述目标JS引擎的使用状态为已释放状态时,将所述目标JS引擎销毁。
可选地,所述装置还包括:
获取模块,被配置为在所述终端的缓存池中存在处于已就绪状态的JS引擎时,获取所述缓存池中已就绪状态的JS引擎的数量;
时长获取模块,被配置为在所述已就绪状态的引擎的数量大于第二预设阈值时,获取所述已就绪状态的JS引擎的创建时长;
引擎销毁模块,被配置为销毁所述缓存池中创建时长大于预设时长的已就绪的JS引擎。
可选地,所述装置还包括:
监听模块,被配置为监听所述终端的内存提示信息;
引擎销毁模块,被配置为在接收到包含内存不足的提示信息时,如果所述缓存池中存在已占用状态的JS引擎,将所述缓存池中已占用状态的JS引擎销毁;
所述引擎销毁模块,还被配置为在所述缓存池中存在已就绪状态的JS引擎且已就绪状态的JS引擎的数量大于第三阈值时,将所述缓存池中处于已就绪状态的JS引擎进行销毁处理,以使所述缓存池中处于已就绪状态的JS引擎的数量不大于第三阈值。
可选地,所述装置还包括:
信息监测模块,被配置为监测是否接收到服务器下发的多引擎配置信息;当接收到所述服务器下发的多引擎配置信息时,触发引擎创建模块执行创建目标JS引擎的步骤。
根据本公开实施例的第三方面,提供一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述任一所述的应用程序启动方法。
本公开实施例的第四方面,提供一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器执行时,使得移动终端能够执行上述一种应用程序启动方法。
根据本公开实施例的第五方面,提供一种应用程序/计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的应用程序启动方法的步骤。
本公开的实施例提供的技术方案可以包括以下有益效果:
本公开实施例提供的应用程序启动方法、装置、电子设备及存储介质,在目标应用程序的启动过程中,当检测到该目标应用程序进入到目标页面时,会首先检查终端的缓存池中是否有已就绪状态的JS引擎,如果没有会创建目标引擎,并将该目标引擎存储到缓存池中。本公开实施例通过创建目标JS引擎,并将创建的目标JS引擎存储到终端的缓存池中,以便通过该目标JS引擎加载目标页面对应的JS Bundle文件,这样可以很好的解决相关技术中因使用同一个JS引擎可能导致的页面白屏问题。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种应用程序启动方法的流程图;
图2是根据一示例性实施例示出的一种应用程序启动的另一流程图;
图3是根据一示例性实施例示出的一种应用程序启动装置的框图;
图4是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种应用程序启动方法的流程图,如图1所示,该方法用于终端中,可以包括以下步骤:
在步骤S110中,在目标应用程序启动过程中,当检测到目标应用程序进入目标页面时,如果终端的缓存池中不存在处于已就绪状态的JS引擎,创建目标JS引擎。
其中,已就绪状态的JS引擎为被创建且未被使用的JS引擎。
本公开实施例中,目标应用程序可以为基于React Native开发平台开发的应用程序,其中React Native是一款开源的跨平台移动应用开发框架,React Native支持使用JavaScript(JS)语言开发出的支持IOS、安卓Android和Web平台的移动应用。而基于ReactNative开发的应用在启动过程中,如果进入某个页面,需要通过JS引擎来加载相应的JSBundle文件,JS Bundle文件可以简称为JS包,JS包可以包括JS核心包和JS业务包,其中JS核心包可以是JS核心库,JS业务包可以是JS业务库,库中包括加载页面所需调用的类。而已有方式通常通过基于同一JS引擎加载相应的JS包,但是一旦该JS引擎被占用,很容易造成业务间加载相同的业务库时的冲突,进而导致页面白屏的现象发生。
因此,本公开实施例在目标应用程序启动过程中,如果检测到目标应用程序进入了目标页面,及相关React Native页面时,会先在终端的缓存池中检测是否存在处于已就绪状态的JS引擎,如果不存在,就创建JS引擎。当然,如果终端的缓存池中检测到存在处于已就绪状态的JS引擎,可以直接使用已就绪状态的JS引擎,这时无需创建新的JS引擎。
本公开实施例不会采用已有公用一个引擎的方式来加载相应的JS包,而是每当应用程序进入到一个页面,就会采用单独的一个引擎来加载相应的JS包,可以很好的避免上述已有问题导致的页面白屏显现。实施例中会将创建的JS引擎存储到终端的缓存中,以便后续使用。
因此,本公开实施例中,缓存池中的JS引擎可以有三种:已就绪状态的JS引擎、已占用状态的JS引擎和已释放状态的JS引擎。其中,已就绪状态的JS引擎为被创建且未被使用的JS引擎,已占用状态的JS引擎为正在被使用的JS引擎,已释放状态的JS引擎为被使用后的JS引擎。
本公开实施例中,如果终端的缓存池中不存在处于已就绪状态的JS引擎,就会创建目标JS引擎;当然,如果终端的缓存池中存在处于已就绪状态的JS引擎,可以直接通过该已就绪状态的JS引擎去加载目标页面对应的JS包。
作为本公开实施例的一种实现方式,在创建目标JS引擎之前,该方法还可以包括如下步骤:
监测是否接收到服务器下发的多引擎配置信息;
当接收到服务器下发的多引擎配置信息时,创建目标JS引擎。
在该实现方式中,可以实现由后台服务器控制终端是否使用多引擎的配置开关,在后台服务器允许终端使用多引擎的配置开关时,终端创建目标JS引擎,否则终端不创建JS引擎。
在步骤S120中,将目标JS引擎存储到终端的缓存池中,并通过目标JS引擎加载目标页面对应的JS Bundle文件。
本公开实施例通过创建JS引擎,并将创建的JS引擎存储到缓存池中,以便后续的使用。基于上述中阐述的JS引擎的三种状态,可以根据JS引擎的使用情况更新其当前状态,因此,该方法还可以包括,在检测到目标JS引擎创建完成时,将目标JS引擎的状态设置为已就绪状态;在检测到目标JS引擎加载相应的JS Bundle文件时,将目标引擎的状态从已就绪状态调整为已占用状态。另外,在检测到应用程序退出所述目标页面时,将目标引擎的状态从已占用状态调整为已释放状态。
另外,在本公开提供的又一实施例中,该方法还可以包括以下步骤:在检测到应用程序退出目标页面时,获取目标JS引擎的使用状态;在目标JS引擎的使用状态为已释放状态时,将目标JS引擎销毁。这样本公开实施例通过将已释放状态的目标JS引擎销毁,可以及时提高缓存池空间的利用率,避免因缓存池存储大量已释放状态的JS引擎而无法存储新创建JS引擎的问题。
本公开实施例提供的应用程序启动方法,在目标应用程序的启动过程中,当检测到该目标应用程序进入到目标页面时,会首先检查终端的缓存池中是否有已就绪状态的JS引擎,如果没有会创建目标引擎,并将该目标引擎存储到缓存池中。本公开实施例通过创建目标JS引擎,并将创建的目标JS引擎存储到终端的缓存池中,以便通过该目标JS引擎加载目标页面对应的JS Bundle文件,这样可以很好的解决相关技术中因使用同一个JS引擎可能导致的页面白屏问题。
基于上述实施例,在本公开提供的又一实施例中,如图2所示,该方法还可以包括以下步骤:
在步骤S131中,获取缓存池中已占用状态的JS引擎的数量。
其中,已占用状态的JS引擎为正在被使用的JS引擎。
本公开实施例中,随着创建的JS引擎可能越来越多,受限于缓存池中的容量大小,缓存池中存储的JS引擎不能无限制的增加,因此需要控制缓存池中JS引擎的数量。需要说明的是,缓存池容量的大小具体是受到终端的硬件,例如终端内存的大小等,缓存池可以位于终端的内存中。
随着应用程序的启动,加载的页面如果越来越多,那么缓存池中已占用的
在步骤S132中,在已占用状态的引擎的数量大于第一预设阈值时,如果缓存池中存在已释放状态的JS引擎,将已释放状态的JS引擎销毁。另外,在步骤S133中,在已占用状态的引擎的数量不大于第一预设阈值时,执行步骤S110。
其中,已释放状态的JS引擎为被使用后的JS引擎。
本公开实施例中的第一预设阈值的设定,可以根据终端的硬件条件来设置,例如终端的内存越大,该第一阈值可以相应的增加,即终端的缓存池中可以同时容纳更多JS引擎。否则,需要将第一预设阈值的大小降低。
因此,在缓存池中的引擎数量大于第一预设阈值时,如果缓存池中存在已释放状态的JS引擎,需要将这些已释放的JS引擎销毁。这样可以避免已释放状态的JS引擎没有被使用而占用缓存池的空间,通过销毁这些已释放状态的引擎来提高缓存池空间的利用率。另外,如果已占用状态的引擎的数量不大于第一预设阈值,说明缓存池的空间没有被占满,可以执行上述步骤S110中创建目标引擎的步骤,避免因缓存池中的JS引擎太多而占满缓存池的空间时无法再创建新的JS引擎。
基于上述实施例,在本公开提供的又一实施例中,该方法还可以包括以下步骤:
S141,如果终端的缓存池中存在处于已就绪状态的JS引擎,获取缓存池中已就绪状态的JS引擎的数量。
S142,在已就绪状态的引擎的数量大于第二预设阈值时,获取已就绪状态的JS引擎的创建时长。
S143,销毁缓存池中创建时长大于预设时长的已就绪的JS引擎。
实施例中,随着打开的页面也来越多,需要创建的JS引擎也越来越多,相应的已占用状态的JS引擎也会很多。因此,虽然处于已就绪状态的JS引擎可以被随时使用,但为了提高缓存池中空间的利用率,如果已就绪状态的JS引擎创建时间太长而没有被使用,说明当前不需要使用JS引擎,可以销毁这些创建时长大于预设时长的已就绪的JS引擎,以提高缓存池的空间利用率。
基于上述实施例,在本公开提供的又一实施例中,该方法还可以包括以下步骤:
S151,监听终端的内存提示信息。
由于终端的内存空间有限,本公开实施例中终端可以随时对内存空间的使用情况进行监控,一旦终端的内存使用率过大超过预警值,会发出内存不足的提示信息。
S152,在接收到包含内存不足的提示信息时,如果缓存池中存在已占用状态的JS引擎,将缓存池中已占用状态的JS引擎销毁。
在接收到包含内存不足的提示信息时,说明终端的内存利用率已经严重不足,需要清理内存以便卡顿。因此,在在接收到包含内存不足的提示信息时,如果缓存池中存在已占用状态的JS引擎,将缓存池中已占用状态的JS引擎全部销毁,避免终端的卡顿。这属于比较激进的清理缓存池的方式,但可以有效的降低内存的占用率,避免终端出现死机或卡顿等问题,待内存占用率提高后,可以重新再创建JS引擎来加载相关JS包。
S153,在缓存池中存在已就绪状态的JS引擎且已就绪状态的JS引擎的数量大于第三阈值时,将缓存池中处于已就绪状态的JS引擎进行销毁处理,以使缓存池中处于已就绪状态的JS引擎的数量不大于第三阈值。
实施例中,如果缓存池中存在已就绪状态的JS引擎且已就绪状态的JS引擎的数量大于第三阈值,说明缓存池中已就绪状态的JS引擎比较多,这时可以只保留一个处于已就绪状态的JS引擎,将其他的已就绪JS引擎销毁,这样可以保证后续对已就绪JS引擎的使用,还可以降低终端内存的占用率。
图3是根据一示例性实施例示出的一种程序启动装置框图。参照图3,该装置包括引擎创建模块10、存储模块20和加载模块30。
引擎创建模块10,被配置为在目标应用程序启动过程中,当检测到所述目标应用程序进入目标页面,且在所述终端的缓存池中不存在处于已就绪状态的JS引擎时,创建目标JS引擎;其中,所述已就绪状态的JS引擎为被创建且未被使用的JS引擎;
存储模块20,被配置为将所述目标JS引擎存储到所述终端的缓存池中;
加载模块30,被配置为通过所述目标JS引擎加载所述目标页面对应的JS Bundle文件。
可选地,其特征在于,所述装置还包括:
数量获取模块,被配置为获取所述缓存池中已占用状态的JS引擎的数量,所述已占用状态的JS引擎为正在被使用的JS引擎;
引擎销毁模块,被配置为在所述已占用状态的引擎的数量大于第一预设阈值,且在所述缓存池中存在已释放状态的JS引擎时,将所述已释放状态的JS引擎销毁;其中,所述已释放状态的JS引擎为被使用后的JS引擎;
所说引擎创建模块,还被配置为在所述已占用状态的引擎的数量不大于第一预设阈值时,执行所述创建目标JS引擎的步骤。
可选地,所述装置还包括:
状态设置模块,被配置为在检测到所述目标JS引擎创建完成时,将所述目标JS引擎的状态设置为已就绪状态;
状态调整模块,被配置为在检测到所述目标JS引擎加载相应的JS Bundle文件时,将所述目标引擎的状态从已就绪状态调整为已占用状态。
可选地,所述装置还包括:
状态获取模块,被配置为在检测到所述目标应用程序退出所述目标页面时,获取所述目标JS引擎的使用状态;
所说引擎销毁模块,还被配置为在所述目标JS引擎的使用状态为已释放状态时,将所述目标JS引擎销毁。
可选地,所述装置还包括:
获取模块,被配置为在所述终端的缓存池中存在处于已就绪状态的JS引擎时,获取所述缓存池中已就绪状态的JS引擎的数量;
时长获取模块,被配置为在所述已就绪状态的引擎的数量大于第二预设阈值时,获取所述已就绪状态的JS引擎的创建时长;
引擎销毁模块,被配置为销毁所述缓存池中创建时长大于预设时长的已就绪的JS引擎。
可选地,所述装置还包括:
监听模块,被配置为监听所述终端的内存提示信息;
引擎销毁模块,被配置为在接收到包含内存不足的提示信息时,如果所述缓存池中存在已占用状态的JS引擎,将所述缓存池中已占用状态的JS引擎销毁;
所述引擎销毁模块,还被配置为在所述缓存池中存在已就绪状态的JS引擎且已就绪状态的JS引擎的数量大于第三阈值时,将所述缓存池中处于已就绪状态的JS引擎进行销毁处理,以使所述缓存池中处于已就绪状态的JS引擎的数量不大于第三阈值。
可选地,所述装置还包括:
信息监测模块,被配置为监测是否接收到服务器下发的多引擎配置信息;当接收到所述服务器下发的多引擎配置信息时,触发引擎创建模块执行创建目标JS引擎的步骤。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本公开实施例提供的应用程序启动装置,在目标应用程序的启动过程中,当检测到该目标应用程序进入到目标页面时,会首先检查终端的缓存池中是否有已就绪状态的JS引擎,如果没有会创建目标引擎,并将该目标引擎存储到缓存池中。本公开实施例通过创建目标JS引擎,并将创建的目标JS引擎存储到终端的缓存池中,以便通过该目标JS引擎加载目标页面对应的JS Bundle文件,这样可以很好的解决相关技术中因使用同一个JS引擎可能导致的页面白屏问题。
另外,本公开实施例通过确定缓存池中的引擎数量在大于第一预设阈值,并且在缓存池中存在已释放状态的JS引擎时,会将已释放的JS引擎销毁。这样可以避免已释放状态的JS引擎没有被使用而占用缓存池的空间,通过销毁这些已释放状态的引擎来提高缓存池空间的利用率。另外,如果已占用状态的引擎的数量不大于第一预设阈值,说明缓存池的空间没有被占满,可以创建目标引擎的步骤,避免因缓存池中的JS引擎太多而占满缓存池的空间时无法再创建新的JS引擎。
图4是根据一示例性实施例示出的一种用于应用程序启动的装置800的框图。例如,装置800是一种电子设备,具体可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图4,装置800可以包括以下一个或多个组件:处理组件802,存储器804,电力组件806,多媒体组件808,音频组件810,输入/输出(I/O)的接口812,传感器组件814,以及通信组件816。
处理组件802通常控制装置800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件802可以包括一个或多个处理器820来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理组件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。
存储器804被配置为存储各种类型的数据以支持在设备800的操作。这些数据的示例包括用于在装置800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件806为装置800的各种组件提供电力。电源组件806可以包括电源管理***,一个或多个电源,及其他与为装置800生成、管理和分配电力相关联的组件。
多媒体组件808包括在所述装置800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当设备800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜***或具有焦距和光学变焦能力。
音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克风(MIC),当装置800处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。
I/O接口812为处理组件802和***接口模块之间提供接口,上述***接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件814包括一个或多个传感器,用于为装置800提供各个方面的状态评估。例如,传感器组件814可以检测到设备800的打开/关闭状态,组件的相对定位,例如所述组件为装置800的显示器和小键盘,传感器组件814还可以检测装置800或装置800一个组件的位置改变,用户与装置800接触的存在或不存在,装置800方位或加速/减速和装置800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件816被配置为便于装置800和其他设备之间有线或无线方式的通信。装置800可以接入基于通信标准的无线网络,如WiFi,运营商网络(如2G、3G、4G或5G),或它们的组合。在一个示例性实施例中,通信组件816经由广播信道接收来自外部广播管理***的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件816还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置800可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述…方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器804,上述指令可由装置800的处理器820执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本公开实施例还提供一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器执行时,使得移动终端能够执行上述一种应用程序启动方法。
根据本公开实施例还提供一种应用程序/计算机程序产品,在本公开提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的应用程序启动方法的步骤。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本公开实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、DSL(Digital Subscriber Line,数字用户线))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD(Digital Versatile Disc,数字多功能光盘))、或者半导体介质(例如SSD(Solid StateDisk,固态硬盘))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种应用程序启动方法,其特征在于,应用于终端,所述方法包括:
在目标应用程序启动过程中,当检测到所述目标应用程序进入目标页面时,如果所述终端的缓存池中不存在处于已就绪状态的JS引擎,创建目标JS引擎;其中,所述已就绪状态的JS引擎为被创建且未被使用的JS引擎;
将所述目标JS引擎存储到所述终端的缓存池中,并通过所述目标JS引擎加载所述目标页面对应的JS Bundle文件。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述缓存池中已占用状态的JS引擎的数量,所述已占用状态的JS引擎为正在被使用的JS引擎;
在所述已占用状态的引擎的数量大于第一预设阈值时,如果所述缓存池中存在已释放状态的JS引擎,将所述已释放状态的JS引擎销毁;其中,所述已释放状态的JS引擎为被使用后的JS引擎;
在所述已占用状态的引擎的数量不大于第一预设阈值时,执行所述创建目标JS引擎的步骤。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在检测到所述目标JS引擎创建完成时,将所述目标JS引擎的状态设置为已就绪状态;
在检测到所述目标JS引擎加载相应的JS Bundle文件时,将所述目标引擎的状态从已就绪状态调整为已占用状态。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在检测到所述目标应用程序退出所述目标页面时,获取所述目标JS引擎的使用状态;
在所述目标JS引擎的使用状态为已释放状态时,将所述目标JS引擎销毁。
5.根据权利要求1~4任一所述的方法,其特征在于,所述方法还包括:
如果所述终端的缓存池中存在处于已就绪状态的JS引擎,获取所述缓存池中已就绪状态的JS引擎的数量;
在所述已就绪状态的引擎的数量大于第二预设阈值时,获取所述已就绪状态的JS引擎的创建时长;
销毁所述缓存池中创建时长大于预设时长的已就绪的JS引擎。
6.根据权利要求1~4任一所述的方法,其特征在于,所述方法还包括:
监听所述终端的内存提示信息;
在接收到包含内存不足的提示信息时,如果所述缓存池中存在已占用状态的JS引擎,将所述缓存池中已占用状态的JS引擎销毁;
在所述缓存池中存在已就绪状态的JS引擎且已就绪状态的JS引擎的数量大于第三阈值时,将所述缓存池中处于已就绪状态的JS引擎进行销毁处理,以使所述缓存池中处于已就绪状态的JS引擎的数量不大于第三阈值。
7.一种应用程序启动装置,其特征在于,应用于终端,所述装置包括:
引擎创建模块,被配置为在目标应用程序启动过程中,当检测到所述目标应用程序进入目标页面,且在所述终端的缓存池中不存在处于已就绪状态的JS引擎时,创建目标JS引擎;其中,所述已就绪状态的JS引擎为被创建且未被使用的JS引擎;
存储模块,被配置为将所述目标JS引擎存储到所述终端的缓存池中;
加载模块,被配置为通过所述目标JS引擎加载所述目标页面对应的JS Bundle文件。
8.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行权利要求1-6任一所述的应用程序启动方法。
9.一种非临时性计算机可读存储介质,其特征在于,当所述存储介质中的指令由移动终端的处理器执行时,使得移动终端能够执行一种应用程序启动方法,所述方法包括权利要求1-6任一所述的应用程序启动方法的步骤。
10.一种应用程序/计算机程序产品,其特征在于,当其在计算机上运行时,使得计算机执行权利要求1-6任一所述的应用程序启动方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110611062.6A CN113467854B (zh) | 2021-06-01 | 2021-06-01 | 应用程序启动方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110611062.6A CN113467854B (zh) | 2021-06-01 | 2021-06-01 | 应用程序启动方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113467854A true CN113467854A (zh) | 2021-10-01 |
CN113467854B CN113467854B (zh) | 2023-10-24 |
Family
ID=77871980
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110611062.6A Active CN113467854B (zh) | 2021-06-01 | 2021-06-01 | 应用程序启动方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113467854B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114186154A (zh) * | 2021-12-06 | 2022-03-15 | 北京达佳互联信息技术有限公司 | 页面处理方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100269154A1 (en) * | 2005-07-22 | 2010-10-21 | Research In Motion Limited | Method of communciating state information between a server and a mobile device browser with version handling |
CN107577509A (zh) * | 2017-08-28 | 2018-01-12 | 深圳市金立通信设备有限公司 | 一种加载应用界面的方法、终端及计算机可读存储介质 |
CN111722903A (zh) * | 2020-06-16 | 2020-09-29 | 北京达佳互联信息技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN111797388A (zh) * | 2020-06-12 | 2020-10-20 | 武汉大学 | 基于运行时随机化的JavaScript引擎内存信息泄露防御方法及*** |
CN111880799A (zh) * | 2020-07-30 | 2020-11-03 | 浪潮云信息技术股份公司 | 取号客户端程序的生成方法、装置及可读介质 |
CN112612531A (zh) * | 2019-09-19 | 2021-04-06 | 北京京东尚科信息技术有限公司 | 应用程序启动方法、装置、电子设备及存储介质 |
-
2021
- 2021-06-01 CN CN202110611062.6A patent/CN113467854B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100269154A1 (en) * | 2005-07-22 | 2010-10-21 | Research In Motion Limited | Method of communciating state information between a server and a mobile device browser with version handling |
CN107577509A (zh) * | 2017-08-28 | 2018-01-12 | 深圳市金立通信设备有限公司 | 一种加载应用界面的方法、终端及计算机可读存储介质 |
CN112612531A (zh) * | 2019-09-19 | 2021-04-06 | 北京京东尚科信息技术有限公司 | 应用程序启动方法、装置、电子设备及存储介质 |
CN111797388A (zh) * | 2020-06-12 | 2020-10-20 | 武汉大学 | 基于运行时随机化的JavaScript引擎内存信息泄露防御方法及*** |
CN111722903A (zh) * | 2020-06-16 | 2020-09-29 | 北京达佳互联信息技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN111880799A (zh) * | 2020-07-30 | 2020-11-03 | 浪潮云信息技术股份公司 | 取号客户端程序的生成方法、装置及可读介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114186154A (zh) * | 2021-12-06 | 2022-03-15 | 北京达佳互联信息技术有限公司 | 页面处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113467854B (zh) | 2023-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105338409B (zh) | 一种网络视频预加载方法及装置 | |
CN105224349B (zh) | 应用程序的删除提示方法和装置 | |
CN106547547B (zh) | 数据采集方法及装置 | |
CN110704054A (zh) | 通过小程序接入目标应用程序的方法、装置、电子设备及存储介质 | |
CN112506553A (zh) | 服务网格的数据面容器的升级方法、装置及电子设备 | |
CN106708967B (zh) | 页面显示方法及装置 | |
CN108446226B (zh) | 应用异常的处理方法 | |
CN104572230B (zh) | 脚本文件的加载方法、脚本文件生成方法及装置 | |
CN113467854B (zh) | 应用程序启动方法、装置、电子设备及存储介质 | |
CN107239307B (zh) | 版本更新信息的显示方法及装置 | |
CN112685269A (zh) | 数据的获取方法、装置、电子设备及存储介质 | |
CN110213062B (zh) | 处理消息的方法及装置 | |
CN113778687B (zh) | 内存分配信息处理方法、装置、电子设备及存储介质 | |
CN110502714B (zh) | 信息检测的方法、装置、电子设备及存储介质 | |
CN107463414B (zh) | 应用安装方法及装置 | |
CN112817844A (zh) | 后台进程驻留测试方法、装置、设备及存储介质 | |
CN107257384B (zh) | 服务状态监控方法及装置 | |
CN112883314A (zh) | 一种请求处理方法及装置 | |
CN112819061A (zh) | 口令信息识别方法、装置、设备及存储介质 | |
CN112102009A (zh) | 广告展示方法、装置、设备及存储介质 | |
CN114077461A (zh) | 应用程序的运行方法、装置、设备及存储介质 | |
CN111597106A (zh) | 一种埋点管理方法及装置 | |
CN110311968B (zh) | 流式加载文件的方法、装置及智能设备 | |
CN105892832B (zh) | 一种显示展示信息的方法和装置 | |
CN105893146B (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 |