CN114089997A - 页面栈的处理方法和装置、存储介质及电子装置 - Google Patents

页面栈的处理方法和装置、存储介质及电子装置 Download PDF

Info

Publication number
CN114089997A
CN114089997A CN202111267000.4A CN202111267000A CN114089997A CN 114089997 A CN114089997 A CN 114089997A CN 202111267000 A CN202111267000 A CN 202111267000A CN 114089997 A CN114089997 A CN 114089997A
Authority
CN
China
Prior art keywords
page
rendering
stack
rendering engine
engine
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.)
Pending
Application number
CN202111267000.4A
Other languages
English (en)
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.)
Qingdao Haier Technology Co Ltd
Haier Smart Home Co Ltd
Original Assignee
Qingdao Haier Technology Co Ltd
Haier Smart Home 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 Qingdao Haier Technology Co Ltd, Haier Smart Home Co Ltd filed Critical Qingdao Haier Technology Co Ltd
Priority to CN202111267000.4A priority Critical patent/CN114089997A/zh
Publication of CN114089997A publication Critical patent/CN114089997A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • G06F16/9566URL specific, e.g. using aliases, detecting broken or misspelled links
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请公开了一种页面栈的处理方法和装置、存储介质及电子装置,其中,该方法包括:根据待打开的第一页面的第一页面地址,确定第一页面为目标类型的页面,其中,目标类型的页面为使用两个渲染引擎交替进行渲染的页面;在两个渲染引擎已与页面栈中目标类型的两个页面分别建立关联的情况下,从两个渲染引擎中确定出第一渲染引擎,其中,第一渲染引擎为与两个页面中先打开的页面所关联的渲染引擎;使用第一渲染引擎对第一页面进行渲染,以跳转至显示第一页面。通过本申请,解决了相关技术中页面栈的处理方法存在由于每个页面都使用一个渲染引擎进行渲染导致的内存占用过多的问题。

Description

页面栈的处理方法和装置、存储介质及电子装置
技术领域
本发明涉及通信领域,具体而言,涉及一种页面栈的处理方法及装置、存储介质、电子装置。
背景技术
Flutter是一种构建用户界面的工具包,可以帮助开发者通过一套代码库高效构建多平台精美应用,支持移动、Web(Website,网站)、桌面和嵌入式平台。设计Flutter框架的目的是使用Flutter创建完整的跨平台App(Application,应用程序),即,App中所有页面都是Flutter页面,但是这种设计方式并不能很好的支持混合视图栈。由于目前的App不会完全设计为Flutter App形式,尤其对于已经上线的App来说,即使要切换为Flutter App形式,也只能采用将已有的App进行逐步迁移。
在上述应用迁移的过程中,对于已经将部分业务更新为Flutter框架的App,可能在使用App时出现Flutter页面与如Native(原生)页面、Web页面等其他页面并存的情况。并且,在使用App的过程中,这Flutter页面与其他页面的出现顺序和数量都是不确定的,需要对产生的混合视图导航栈进行管理。
相关技术中主要采用Flutter多引擎方案进行Flutter混合视图栈管理,即,在创建一个视图的同时同步创建一个用于渲染当前视图的Flutter引擎,然而,对于多引擎方案,创建每一个新页面将占用80MB(MByte,兆字节)以上的内存。在页面较多时,可能会引发OOM(Out of memory,内存溢出),从而使得App出现闪退错误。虽然最新一代的Flutter可以减少Flutter引擎占用的内存,然而,在App中页面存在大量的页面的情况下,Flutter引擎还是会占用大量的内存。
由此可见,Flutter多引擎方案虽可以一定程度的解决混合视图栈的管理问题,但是会产生占用大量内存。也就是说,相关技术中页面栈的处理方法存在由于每个页面都使用一个渲染引擎进行渲染导致的内存占用过多的问题。
发明内容
本发明实施例提供了一种页面栈的处理方法及装置、存储介质、电子装置,以至少解决了相关技术中页面栈的处理方法存在由于每个页面都使用一个渲染引擎进行渲染导致的内存占用过多的问题。
根据本申请实施例的一个方面,提供了一种页面栈的处理方法,包括:根据待打开的第一页面的第一页面地址,确定所述第一页面为目标类型的页面,其中,所述目标类型的页面为使用两个渲染引擎交替进行渲染的页面;在所述两个渲染引擎已与页面栈中所述目标类型的两个页面分别建立关联的情况下,从所述两个渲染引擎中确定出第一渲染引擎,其中,所述第一渲染引擎为与所述两个页面中先打开的页面所关联的渲染引擎;使用所述第一渲染引擎对所述第一页面进行渲染,以跳转至显示所述第一页面。
在一个示例性实施例中,所述从所述两个渲染引擎中确定出第一渲染引擎包括:沿着目标方向依次查找所述页面栈中的各个页面,其中,所述目标方向为由所述页面栈的栈顶到所述页面栈的栈底的方向;在从所述页面栈中查找到所述目标类型的所述两个页面的情况下,将所述两个渲染引擎中与所述两个页面中后一个查找到的页面关联的渲染引擎,确定为所述第一渲染引擎。
在一个示例性实施例中,在所述根据待打开的第一页面的第一页面地址,确定所述第一页面为目标类型的页面之后,所述方法还包括:在所述两个渲染引擎存在未与所述页面栈中的所述目标类型的页面关联的渲染引擎的情况下,从所述两个渲染引擎中确定出第二渲染引擎,其中,所述第二渲染引擎为未与所述页面栈中的页面关联的渲染引擎;使用所述第二渲染引擎对所述第一页面进行渲染,以跳转至显示所述第一页面。
在一个示例性实施例中,所述使用所述第一渲染引擎对所述第一页面进行渲染包括:解除所述第一渲染引擎与所述两个页面中先打开的页面之间的关联;建立所述第一渲染引擎与所述第一页面之间的关联,其中,建立关联后的所述第一渲染引擎用于对所述第一页面进行渲染。
在一个示例性实施例中,在所述使用所述第一渲染引擎对所述第一页面进行渲染之后,该方法还包括:根据待关闭的第二页面的第二页面地址,确定所述第二页面为所述目标类型的页面,其中,所述第二页面是所述两个渲染引擎中的第三渲染引擎所关联的页面;在所述页面栈中存在未与所述两个渲染引擎中的任一个渲染引擎关联的、所述目标类型的第三页面的情况下,解除所述第三渲染引擎与所述第二页面之间的关联;建立所述第三渲染引擎与所述第三页面之间的关联。
在一个示例性实施例中,在所述根据待关闭的第二页面的第二页面地址,确定所述第二页面为所述目标类型的页面之后,所述方法还包括:沿着目标方向依次查找所述页面栈中的各个页面,其中,所述目标方向为由所述页面栈的栈顶到所述页面栈的栈底的方向;将查找到的第一个未与所述两个渲染引擎中的任一个渲染引擎关联的、所述目标类型的页面,确定为所述第三页面。
在一个示例性实施例中,所述根据待打开的第一页面的第一页面地址,确定所述第一页面为目标类型的页面,包括:从所述第一页面地址进行解析,得到所述第一页面地址的页面地址前缀,其中,所述页面地址前缀用于标识所述第一页面地址所使用的网络协议;在所述页面地址前缀与所述目标类型对应的页面地址特征匹配的情况下,确定所述第一页面为所述目标类型的页面。
根据本申请实施例的另一个方面,还提供了一种页面栈的处理装置,包括:第一确定单元,用于根据待打开的第一页面的第一页面地址,确定所述第一页面为目标类型的页面,其中,所述目标类型的页面为使用两个渲染引擎交替进行渲染的页面;第二确定单元,用于在所述两个渲染引擎已与页面栈中所述目标类型的两个页面分别建立关联的情况下,从所述两个渲染引擎中确定出第一渲染引擎,其中,所述第一渲染引擎为与所述两个页面中先打开的页面所关联的渲染引擎;第一渲染单元,用于使用所述第一渲染引擎对所述第一页面进行渲染,以跳转至显示所述第一页面。
在一个示例性实施例中,所述第二确定单元包括:查找模块,用于沿着目标方向依次查找所述页面栈中的各个页面,其中,所述目标方向为由所述页面栈的栈顶到所述页面栈的栈底的方向;第一确定模块,用于在从所述页面栈中查找到所述目标类型的所述两个页面的情况下,将所述两个渲染引擎中与所述两个页面中后一个查找到的页面关联的渲染引擎,确定为所述第一渲染引擎。
在一个示例性实施例中,所述装置还包括:第三确定单元,用于在所述根据待打开的第一页面的第一页面地址,确定所述第一页面为目标类型的页面之后,在所述两个渲染引擎存在未与所述页面栈中的所述目标类型的页面关联的渲染引擎的情况下,从所述两个渲染引擎中确定出第二渲染引擎,其中,所述第二渲染引擎为未与所述页面栈中的页面关联的渲染引擎;第二渲染单元,用于使用所述第二渲染引擎对所述第一页面进行渲染,以跳转至显示所述第一页面。
在一个示例性实施例中,所述第一渲染单元包括:解除模块,用于解除所述第一渲染引擎与所述两个页面中先打开的页面之间的关联;建立模块,用于建立所述第一渲染引擎与所述第一页面之间的关联,其中,建立关联后的所述第一渲染引擎用于对所述第一页面进行渲染。
在一个示例性实施例中,所述装置还包括:第四确定单元,用于在使用所述第一渲染引擎对所述第一页面进行渲染之后,根据待关闭的第二页面的第二页面地址,确定所述第二页面为所述目标类型的页面,其中,所述第二页面是所述两个渲染引擎中的第三渲染引擎所关联的页面;解除单元,用于在所述页面栈中存在未与所述两个渲染引擎中的任一个渲染引擎关联的、所述目标类型的第三页面的情况下,解除所述第三渲染引擎与所述第二页面之间的关联;建立单元,用于建立所述第三渲染引擎与所述第三页面之间的关联。
在一个示例性实施例中,所述装置还包括:查找单元,用于在所述根据待关闭的第二页面的第二页面地址,确定所述第二页面为所述目标类型的页面之后,沿着目标方向依次查找所述页面栈中的各个页面,其中,所述目标方向为由所述页面栈的栈顶到所述页面栈的栈底的方向;第五确定单元,用于将查找到的第一个未与所述两个渲染引擎中的任一个渲染引擎关联的、所述目标类型的页面,确定为所述第三页面。
在一个示例性实施例中,所述第一确定单元包括:解析模块,用于从所述第一页面地址进行解析,得到所述第一页面地址的页面地址前缀,其中,所述页面地址前缀用于标识所述第一页面地址所使用的网络协议;第二确定模块,用于在所述页面地址前缀与所述目标类型对应的页面地址特征匹配的情况下,确定所述第一页面为所述目标类型的页面。
根据本申请实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述的页面栈的处理方法。
根据本申请实施例的又一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述的页面栈的处理方法。
在本申请实施例中,采用两个渲染引擎交替对目标类型的页面进行渲染的方式,通过根据待打开的第一页面的第一页面地址,确定第一页面为目标类型的页面,其中,目标类型的页面为使用两个渲染引擎交替进行渲染的页面;在两个渲染引擎已与页面栈中目标类型的两个页面分别建立关联的情况下,从两个渲染引擎中确定出第一渲染引擎,其中,第一渲染引擎为与两个页面中先打开的页面所关联的渲染引擎;使用第一渲染引擎对第一页面进行渲染,以跳转至显示第一页面,由于在根据待打开页面的页面地址确定待打开页面的页面类型为目标类型的页面之后,将两个与渲染引擎关联的页面中先打开的页面所关联的渲染引擎作为第一渲染引擎对待打开页面进行渲染,可以实现通过两个渲染引擎对目标类型的页面进行渲染、进而减少使用的渲染引擎的数量的目的,达到了减少渲染引擎的内存占用、提高内存资源的利用率的技术效果,进而解决了相关技术中页面栈的处理方法存在由于每个页面都使用一个渲染引擎进行渲染导致的内存占用过多的问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是根据本申请实施例的一种可选的页面栈的处理方法的硬件环境的示意图;
图2是根据本申请实施例的一种可选的页面栈的处理方法的流程示意图;
图3是根据本申请实施例的一种可选的页面栈的处理系统中打开一个页面的流程示意图;
图4是根据本申请实施例的一种可选的页面栈的处理系统中关闭一个页面的流程示意图;
图5是根据本申请实施例的一种可选的页面栈的处理系统中渲染引擎的渲染原理图;
图6是根据本申请实施例的另一种可选的页面栈的处理系统中渲染引擎的工作原理图;
图7是根据本申请实施例的一种可选的页面栈的处理系统中的整体时序图;
图8是根据本申请实施例的一种可选的页面栈的处理装置的结构框图;
图9是根据本申请实施例的一种可选的电子装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例的一个方面,提供了一种页面栈的处理方法。可选地,在本实施例中,上述页面栈的处理方法可以应用于如图1所示的由终端设备102和服务器104所构成的硬件环境中。如图1所示,服务器104通过网络与终端设备102进行连接,可用于为终端设备或终端设备上安装的客户端提供服务(如应用服务等),可在服务器上或独立于服务器设置数据库,用于为服务器104提供数据存储服务。
上述网络可以包括但不限于以下至少之一:有线网络,无线网络。上述有线网络可以包括但不限于以下至少之一:广域网,城域网,局域网,上述无线网络可以包括但不限于以下至少之一:WIFI(Wireless Fidelity,无线保真),蓝牙。终端设备102可以但不限定于为智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。
本申请实施例的页面栈的处理方法可以由服务器104来执行,也可以由终端设备102来执行,还可以是由服务器104和终端设备102共同执行。其中,终端设备102执行本申请实施例的页面栈的处理方法也可以是由安装在其上的客户端来执行。
以由终端设备102来执行本实施例中的页面栈的处理方法为例,图2是根据本申请实施例的一种可选的页面栈的处理方法的流程示意图,如图2所示,该方法的流程可以包括以下步骤:
步骤S202,根据待打开的第一页面的第一页面地址,确定第一页面为目标类型的页面,其中,目标类型的页面为使用两个渲染引擎交替进行渲染的页面。
本实施例中的页面栈的处理方法可以应用到在终端设备、具备页面显示功能的智能家居设备或者其他设备内部进行页面栈处理的场景中。上述的智能家居设备可以是位于用户家庭中的智能家居设备,可以为智能电视机、智能冰箱等安装有智能芯片的电子设备,上述智能家居设备可以是页面栈的处理系统中的智能家居设备,相比于传统的家居设备,本实施例中的智能家居设备中增加了计算模块、网络接口、输入输出装置等,使得智能家居设备具有智能分析和智能服务的功能。
相关技术中,可以通过对页面栈中的每个目标类型的页面都匹配一个渲染引擎,从而对混合页面栈进行管理。但是这种方式会带来大量的内存开销。为了减少内存开销,也可以通过FlutterBoost框架进行混合页面栈的管理。上述框架使用Flutter单引擎管理混合视图栈,可以解决Flutter多引擎方案内存占用过多的问题。
然而,在FlutterBoost框架的单引擎方案,一个引擎只能为一个页面进行渲染,当从旧页面跳转到新页面后,将会对旧页面的内容进行截图后保存在页面栈中。当从新页面返回到旧页面时,在返回动画中显示的并不是真正的页面,而是先前保存的截图。在这种情况下,即使旧页面的内容发生变化,在返回动画过程中也无法看到变化之后的内容,影响了用户的使用体验。与多引擎方案相比,单引擎方案的内部逻辑更加复杂,在实际使用中也会产生更多的问题。相应的,也会导致应用程序的维护成本增加,开发过程的周期也会变长。此外,目前的Flutter框架已经更新到了版本号为2.2.3版本,但FlutterBoost依然只支持以前发布的版本号为1.17.1版本的Flutter框架,导致使用Flutterboost框架的App受到制约,无法升级更新的Flutter版本。
可选地,在本实施例中,可以采用双引擎对Flutter页面交替进行渲染的方式,来解决多引擎带来的内存占用过多的问题和单引擎带来的体验差的问题,同时,可以使App摆脱FlutterBoost框架的制约。
用户的终端设备上可以运行有目标应用,在用户想要打开目标应用中的第一页面时,其可以在终端设备的检测区域进行第一触发操作,以触发打开第一页面。上述的第一触发操作可以为滑动、点击等类型的触控操作,也可以是单指或者多指所对应的手势操作,还可以是语音交互操作,本实施例中对第一触发操作的类型不做限定。
上述的检测区域可以是终端设备或智能家居设备的显示屏的任意区域或者特定区域,这里的显示屏是用于显示终端设备或智能家居设备中的安装的应用程序的页面的部件,可以但不局限为LED(Light Emitting Diode,发光二极管)、墨水屏等的实体屏幕,也可以是投射到空气介质或其他介质中的显示屏,本实施例中对此不做限定。
应用程序中的每个页面可以对应着唯一的URL(Uniform Resource Location,统一资源定位符,其为一种页面地址)。目标应用(或者,终端设备,本实施例中以目标应用为例进行说明)可以获取该第一页面的页面地址,即,第一页面地址,该第一页面地址可以是第一页面的URL。根据第一页面地址,目标应用可以确定第一页面的页面类型,确定的结果可以是第一页面为目标类型的页面,该目标类型的页面是使用两个渲染引擎交替进行渲染的页面,例如,Flutter页面,还可以是其他类型的页面,本实施例中对此不做限定。
可选地,确定第一页面的页面类型的操作可以是由目标应用的Page Route(即,App中的路由管理器)执行的。路由管理器可以获取第一页面的第一页面地址。在获取到第一页面地址之后,路由管理器可以根据该第一页面地址确定第一页面的页面类型,并可以将该页面类型与事先存储的目标类型进行比较,若第一页面类型与目标类型一致,则确定第一页面为目标类型的页面。
可选地,确定第一页面的页面类型的操作可以是在终端设备本地执行的,也可以是由查询服务器执行的,即,终端设备可以将第一页面地址发送到查询服务器,由查询服务器根据第一页面地址确定第一页面是否为目标类型的页面。本实施例中对此不做限定。
例如,当用户想要打开应用程序的页面A时,将会在智能手机(终端设备的一种示例)的相应区域进行点击(第一触发操作的一种示例)。在检测到用户的点击操作后,应用程序可以确定待打开页面为页面A。应用程序的路由管理器可以获取页面A的页面地址,并根据页面A的页面地址确定页面A是否为Flutter页面(即,目标类型的页面的一种示例)。
步骤S204,在两个渲染引擎已与页面栈中目标类型的两个页面分别建立关联的情况下,从两个渲染引擎中确定出第一渲染引擎,其中,第一渲染引擎为与两个页面中先打开的页面所关联的渲染引擎。
上述两个渲染引擎可以用于交替对目标类型的页面进行渲染,即,在终端设备的显示窗口中轮流渲染出目标类型的页面的内容。默认情况下,渲染引擎可以显示html(HyperText Markup Language,超文本标记语言)、xml(Extensible Markup Language,可扩展标记语言)文档及图片,也可以借助插件(一种浏览器扩展)显示其他类型数据,例如使用PDF(Portable Document Format,便携式文档格式)阅读器插件显示PDF格式的数据。
在确定第一页面为目标类型的页面之后,目标应用可以确定上述的两个渲染引擎是否均已创建、且已与页面栈中目标类型的两个页面分别建立关联。如果两个渲染引擎已与页面栈中目标类型的两个页面分别建立关联,目标应用可以从上述两个渲染引擎中确定出第一渲染引擎。可选地,第一渲染引擎为与两个页面中先打开的页面所关联的渲染引擎。
可选地,确定渲染当前页面的渲染引擎的操作可以是由目标应用的页面管理器(Page Manager)来执行的,该页面管理器可以用于为目标类型的页面调配引擎资源。例如,该页面管理器可以是Flutter页面管理器,其可以为所有Flutter页面调配双引擎资源。可选地,确定渲染当前页面的渲染引擎的操作也可以通过调度服务器来执行的,该调度服务器可以与终端设备进行通信连接,用于基于终端设备的调度请求确定当前页面(例如,第一页面)的渲染引擎。
需要说明的是,渲染引擎的数量并不限定于两个,只要渲染引擎的数量(至少两个)小于页面栈中目标类型的页面数量也可以达到相同的技术效果。例如,采用三个渲染引擎交替对目标类型的页面进行渲染也可以实现相同的技术效果,本实施例中对渲染引擎的个数并不做限定。
例如,当确定出页面A为Flutter页面之后,若两个Flutter引擎均已与页面栈中的Flutter页面建立了关联,可以将位于页面栈中最后一个关联有Flutter引擎的Flutter页面所关联的Flutter引擎(为第一Flutter引擎)确定为当前要使用的Flutter引擎。
需要说明的是,对于除了目标类型以外的其他类型的页面,可以采用与其对应的渲染方式进行页面渲染,对于其他类型的页面的渲染方式,本实施例中不做限定。
步骤S206,使用第一渲染引擎对第一页面进行渲染,以跳转至显示第一页面。
在确定了第一渲染引擎之后,目标应用可以使用第一渲染引擎对第一页面进行渲染,例如,可以使用调度指令调度第一渲染引擎资源,以使用第一渲染引擎渲染第一页面,从而可以跳转到显示第一页面,例如,在目标应用的应用界面上显示第一页面。
例如,当确定出使用第一Flutter引擎之后,应用程序可以使用第一Flutter引擎对页面A进行渲染。在应用程序的显示界面上显示出页面A。
通过上述步骤S202至步骤S206,根据待打开的第一页面的第一页面地址,确定第一页面为目标类型的页面,其中,目标类型的页面为使用两个渲染引擎交替进行渲染的页面;在两个渲染引擎已与页面栈中目标类型的两个页面分别建立关联的情况下,从两个渲染引擎中确定出第一渲染引擎,其中,第一渲染引擎为与两个页面中先打开的页面所关联的渲染引擎;使用第一渲染引擎对第一页面进行渲染,以跳转至显示第一页面,解决了相关技术中页面栈的处理方法存在由于对页面栈中的每个页面都采用一个渲染引擎进行渲染导致的渲染引擎占用内存过多的问题,减少了渲染引擎的内存占用,提高了内存资源的利用率。
在一个示例性实施例中,从两个渲染引擎中确定出第一渲染引擎包括:
S11,沿着目标方向依次查找页面栈中的各个页面,其中,目标方向为由页面栈的栈顶到页面栈的栈底的方向;
S12,在从页面栈中查找到目标类型的两个页面的情况下,将两个渲染引擎中与两个页面中后一个查找到的页面关联的渲染引擎,确定为第一渲染引擎。
可选地,可以通过与渲染引擎对应的页面标识从两个渲染引擎中确定出当前要使用的渲染引擎,即,第一渲染引擎。与渲染引擎对应的页面标识可以是与渲染引擎的关联页面的页面序号,即,基于页面序号确定与两个页面中先打开的页面所关联的渲染引擎。这里的页面序号可以是关联页面在页面栈中的序号,也可以是关联页面在页面栈的目标类型的页面中的序号。关联页面的页面序号可以通过配置信息记录在终端设备的本地,或者,渲染引擎的配置信息中,本实施例中对此不做限定。
可选地,在本实施例中,为了减少对渲染引擎的配置信息的修改,提高渲染引擎确定的准确性,目标应用可以沿着页面栈的栈顶往栈底的方向,依次查找页面栈中的各个页面。如果从页面栈查找到目标类型的两个页面(可以确定两个渲染引擎均已与页面栈中的目标类型的页面建立关联),目标应用可以将后一个查找到的目标类型的页面所关联的渲染引擎确定为第一渲染引擎。
由于页面栈中遵循的是“先进后出”的原则,因此,页面栈中先打开的页面都靠近页面栈的栈底,在对页面栈中的页面进行查询的过程中,两个页面中后一个查找到的页面即为两个页面中先打开的页面,即,两个页面中靠近栈底的页面,或者说,远离栈顶的页面。
可选地,上述查找操作可以是由页面管理器来执行的。以Flutter页面管理器为例,Flutter页面管理器可以通过页面导航器(Navigator)获取当前的视图栈(即,页面栈),从当前视图栈的栈顶开始查找,查找到最后一个有Flutter引擎的页面。
通过本实施例,沿着页面栈的栈顶往栈底的方向查找页面栈中目标类型的页面,进而确定出待使用的渲染引擎,可以减少对渲染引擎的配置信息的修改,提高渲染引擎确定的准确性。
在一个示例性实施例中,在根据待打开的第一页面的第一页面地址,确定第一页面为目标类型的页面之后,上述方法还包括:
S21,在两个渲染引擎存在未与页面栈中的目标类型的页面关联的渲染引擎的情况下,从两个渲染引擎中确定出第二渲染引擎,其中,第二渲染引擎为未与页面栈中的页面关联的渲染引擎;
S22,使用第二渲染引擎对第一页面进行渲染,以跳转至显示第一页面。
在本实施例中,如果两个渲染引擎存在未与页面栈中的目标类型的页面关联的渲染引擎,目标应用可以直接将未与页面栈中的页面关联的渲染引擎,确定为渲染第一页面所使用的渲染引擎,即,第二渲染引擎。可选地,如果未与页面栈中的目标类型的页面关联的渲染引擎还未创建,则可以首先创建第二渲染引擎。如果两个渲染引擎均未与页面栈中目标类型的页面关联,则可以从两个渲染引擎中随机或者按照预定的顺序选取出第二渲染引擎。
在确定出第二渲染引擎之后,目标应用可以使用第二渲染引擎对第一页面进行渲染,以跳转至显示第一页面。使用第二渲染引擎渲染第一页面的方式与前述实施例中类似,在此不做赘述。
例如,当两个Flutter引擎中存在未与页面栈中的Flutter页面关联的Flutter引擎时,智能手机可以将未与页面栈中的Flutter页面关联的第二Flutter引擎确定要使用的Flutter引擎,并使用第二Flutter引擎对页面A进行渲染,以跳转至显示页面A。
通过本实施例,当存在未与目标类型的页面关联的渲染引擎时,使用未关联的渲染引擎进行页面渲染,可以提高页面渲染的准确性,提高引擎资源的利用率。
在一个示例性实施例中,使用第一渲染引擎对第一页面进行渲染包括:
S31,解除第一渲染引擎与两个页面中先打开的页面之间的关联;
S32,建立第一渲染引擎与第一页面之间的关联,其中,建立关联后的第一渲染引擎用于对第一页面进行渲染。
由于渲染引擎只能对一个页面与其进行关联的一个页面进行渲染,如果一个渲染引擎与多个页面都建立了关联,可能会导致页面的渲染混乱,从而降低用户的使用体验。在本实施例中,在从两个渲染引擎中确定第一渲染引擎后,目标应用可以解除第一渲染引擎与该渲染引擎关联的目标类型的页面之间的关联关系,即,解除第一渲染引擎与两个页面中先打开的页面之间的关联。
可选地,解除第一渲染引擎与两个页面中先打开的页面之间的关联可以是通过以下方式执行的:删除第一渲染引擎中记录的与其关联的页面地址,即,目标类型的关联页面的页面地址,删除关联服务器中记录的第一渲染引擎与第一渲染引擎的关联页面之间的关联记录,该关联服务器用于记录渲染引擎与页面之间的关联关系。
在解除第一渲染引擎与两个页面中先打开的页面之间的关联之后,目标应用可以建立第一渲染引擎与第一页面之间的关联关系,由于此时并未有与第一渲染引擎关联的页面,不会导致页面的渲染混乱。可选地,上述关联关系可以是通过以下至少之一的方式建立的:在第一渲染引擎中记录第一页面的页面地址,即,第一页面地址;由关联服务器关联第一渲染引擎与第一页面。本实施例中也对此不做限定。
例如,当确定出第一Flutter引擎后,智能手机可以解除第一Flutter引擎与其关联的Flutter页面之间的关联关系,并在解除关联关系之后,建立第一Flutter引擎与页面A之间的关联关系,以使用第一Flutter引擎对页面A进行渲染。
通过本实施例,通过先解除渲染引擎与旧页面之间已有关联,再建立渲染引擎与新页面之间的关联,避免出现页面渲染混乱的情况,提高页面渲染的准确度。
在一个示例性实施例中,在使用第一渲染引擎对第一页面进行渲染之后,上述方法还包括:
S41,根据待关闭的第二页面的第二页面地址,确定第二页面为目标类型的页面,其中,第二页面是两个渲染引擎中的第三渲染引擎所关联的页面;
S42,在页面栈中存在未与两个渲染引擎中的任一个渲染引擎关联的、目标类型的第三页面的情况下,解除第三渲染引擎与第二页面之间的关联;
S43,建立第三渲染引擎与第三页面之间的关联。
在目标应用查看页面的过程中,除了存在打开页面的场景以外,还存在关闭页面的场景。如果用户想要关闭目前已经打开的第二页面,其可以在终端设备的检测区域进行第二触发操作,以触发关闭第二页面。上述的第二触发操作可以为滑动、点击等类型的触控操作,也可以是单指或者多指所对应的手势操作,还可以是语音交互操作,本实施例中对第二触发操作的类型不做限定。
目标应用可以检测到上述的第二触发操作,并响应于检测到的第二触发操作,获取待关闭的第二页面的页面地址,即,第二页面地址。该第二页面地址可以是第二页面的URL。根据第二页面地址,目标应用可以确定第二页面的页面类型,确定的结果可以是第二页面为目标类型的页面,例如,Flutter页面,还可以是其他类型的页面,本实施例中对此不做限定。
第二页面为目标类型的页面,那么,其可以与两个渲染引擎中的一个渲染引擎(即,第三渲染引擎,其可以为第一渲染引擎,也可以为另一个渲染引擎)建立有关联关系。为了提高渲染引擎资源利用的合理性,如果在页面栈中存在未与两个渲染引擎中的任一渲染引擎关联的、目标类型的第三页面,目标应用可以首先解除第三渲染引擎与第二页面之间的关联,然后建立第三渲染引擎与第三页面之间的关联。解除第三渲染引擎与第二页面之间的关联、以及建立第三渲染引擎与第三页面之间的关联的与前述类似,在此不做赘述。
需要说明的是,如果页面栈中不存在未与两个渲染引擎中的任一渲染引擎关联的、目标类型的页面,则可以解除第三渲染引擎与第二页面之间的关联,而不将第三渲染引擎与任一页面建立关联,还可以删除该第三渲染引擎,本实施例中对此不做限定。
例如,当想要关闭页面B时,如果页面B为Flutter页面,而当前视图栈中存在未与两个Flutter引擎中的任一渲染引擎关联的、Flutter类型的页面C时,智能手机可以解除页面B与其对应的Flutter引擎之间的关联关系,并将解除关联关系后的Flutter引擎与页面C建立关联关系。
通过本实施例,通过将与待关闭的目标类型的页面关联的渲染引擎与页面栈中未与渲染引擎建立关联关系的目标类型的页面进行关联,可以提高渲染引擎资源利用的合理性。
在一个示例性实施例中,在根据待关闭的第二页面的第二页面地址,确定第二页面为目标类型的页面之后,上述方法还包括:
S51,沿着目标方向依次查找页面栈中的各个页面,其中,目标方向为由页面栈的栈顶到页面栈的栈底的方向;
S52,将查找到的第一个未与两个渲染引擎中的任一个渲染引擎关联的、目标类型的页面,确定为第三页面。
可选地,可以通过页面栈中的各个页面的页面标识确定出第三页面。各个页面的页面标识可以标识各个页面的页面类型以及在页面栈中的位置(可以是页面序号)。基于页面类型和页面位置,可以将从栈顶开始的第三个目标类型的页面,确定为第三页面。
可选地,在本实施例中,为了提高页面确定的准确性,目标应用可以沿着页面栈的栈顶往栈底的方向,依次查找页面栈中的各个页面。如果页面栈中存在未与两个渲染引擎中的任一渲染引擎关联的、目标类型的页面,可以将查找到的第一个此种类型的页面,确定为第三页面。该第三页面为与栈顶之间的距离最近、且未与渲染引擎关联的目标类型的页面。
例如,智能手机可以沿着由页面栈的栈顶到页面栈的栈底的方向依次查找页面栈中的各个页面,将查找到的第一个未与Flutter引擎关联的Flutter页面,确定为待与Flutter引擎关联的页面。
通过本实施例,沿着页面栈的栈顶往栈底的方向查找页面栈中目标类型的页面,进而确定出待与渲染引擎关联的页面,可以提高页面确定的准确性。
在一个示例性实施例中,根据待打开的第一页面的第一页面地址,确定第一页面为目标类型的页面,包括:
S61,从第一页面地址进行解析,得到第一页面地址的页面地址前缀,其中,页面地址前缀用于标识第一页面地址所使用的网络协议;
S62,在页面地址前缀与目标类型对应的页面地址特征匹配的情况下,确定第一页面为目标类型的页面。
在应用程序中打开的页面,其页面类型不同,页面地址所包含的页面地址特征存在区别。例如,Native页面的URL格式为“native://xxx”,Web页面的URL格式为“http://xxx”或“https://xxx”,Flutter页面的URL格式为“flutter://xxx”。因此,可以基于页面地址的页面地址特征确定页面的页面类型。上述页面地址特征可以包括页面地址前缀。目标应用可以对第一页面地址进行解析,得到第一页面地址的页面地址前缀。该页面地址前缀可以用于标识第一页面地址所使用的网络协议。上述解析过程可以是由目标应用执行的,也可以是由目标应用的页面路由器执行的,本实施例中对此不做限定。
当解析出的页面地址前缀与目标类型对应的页面地址特征匹配时,目标应用可以确定第一页面为目标类型的页面。上述页面地址前缀与目标类型对应的页面地址特征匹配可以是两者相同,也可以是目标类型对应的页面地址特征中包含页面地址前缀,本实施例中对此不做限制。
例如,当页面A解析出的页面地址前缀为“flutter://”时,可以将上述页面地址前缀与Flutter页面的页面地址特征“flutter://”进行匹配,由于两者相同,可以确定页面A为Flutter类型的页面。
通过本实施例,通过待打开页面的页面地址前缀与目标类型对应的页面地址特征的匹配关系判断待打开页面的页面类型,可以提高页面类型判定的便捷性。
下面结合可选示例对本申请实施例中的页面栈的处理方法进行解释说明。在本可选示例中,目标类型的页面为Flutter页面,渲染引擎为Flutter引擎。
本可选示例中提供的是一种使用Flutter双引擎交替渲染Flutter页面的方案,可以在混合视图栈(即,页面栈,允许写入不同类型的页面)中处理多级页面的情况下,合理精确的调度这两个Flutter引擎为不同Flutter页面提供渲染、消息传递、数据传递等服务。
结合图3和图4,对于打开一个新的Flutter页面的场景,本可选示例的页面栈的处理方法可以包括以下步骤:
步骤S302,通过页面路由器打开一个页面,传入页面URL(例如,页面路由器通过gotoPage(url)获取要打开页面的URL)。
如图5所示,当前视图栈中包含了多个Flutter页面,即,Flutter页面A、Flutter页面B、Flutter页面C和Flutter页面D,其中,Flutter引擎A先与Flutter页面A关联,再与Flutter页面C关联,Flutter引擎B先与Flutter页面B关联,再与Flutter页面D关联,如图6所示。
步骤S304,页面路由器解析该页面地址前缀为“flutter”(即,确定url scheme是flutter)。
步骤S306,通过Flutter页面管理器打开该页面,并将该页面的页面地址传入Flutter页面管理器(例如,通过gotoFlutterPage(url)将URL传给Flutter页面管理器)。
步骤S308,Flutter页面管理器通过页面导航器获取当前的视图栈。
步骤S310,Flutter页面管理器从当前视图栈的栈顶向栈底进行查找,查找到最后一个有渲染引擎的页面,并解除该渲染引擎与该页面的关联关系。
Flutter页面管理器可以查找当前视图栈中距离栈顶最近并且没有Flutter引擎的Flutter页面,查找到Flutter页面C。
步骤S312,在页面栈中创建要跳转的新的Flutter页面,并建立渲染引擎和新页面之间的关联关系。
Flutter页面管理器创建Flutter页面E的Flutter引擎,即,创建Flutter页面E与Flutter引擎A之间的关联。
步骤S314,通过页面导航器跳转新的Flutter页面(FluttePage E)
通过页面导航器将Flutter页面E入栈,并跳转到新的Flutter页面,即,Flutter页面E。
结合图4和图7,对于关闭一个Flutter页面的场景,本可选示例的页面栈的处理方法可以包括以下步骤:
步骤S702,通过页面路由器关闭一个页面,传入页面URL(例如,页面路由器通过ClosePage(url)获取要关闭页面的URL,例如,Flutter页面E的URL)。
步骤S704,页面路由器解析该页面地址前缀为“flutter”(即,确定url scheme是flutter)。
步骤S706,通过Flutter页面管理器关闭该页面,并将该页面的页面地址出入Flutter页面管理器(例如,通过CloseFlutterPage(url)将URL传给Flutter页面管理器)。
步骤S708,Flutter页面管理器通过页面导航器获取当前的视图栈。
步骤S710,Flutter页面管理器从当前视图栈的栈顶向栈底进行查找,查找到第一个没有渲染引擎的页面。
Flutter页面管理器可以查找当前视图栈中距离栈顶最近并且没有Flutter引擎的Flutter页面,查找到Flutter页面C。
步骤S712,将查找到的Flutter页面与要关闭的页面所关联的渲染引擎建立关联关系。
Flutter页面管理器将Flutter页面C与Flutter引擎A建立关联关系。
步骤S714,通过页面导航器关闭当前页面(FlutterPage E),例如,通过页面导航器将Flutter页面E出栈。
通过本可选示例,通过双引擎方案管理混合视图栈中的Flutter页面,既把内存占用控制在较小的范围内,又能提供更好的用户体验。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM(Read-Only Memory,只读存储器)/RAM(Random Access Memory,随机存取存储器)、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
根据本申请实施例的另一个方面,还提供了一种用于实施上述页面栈的处理方法的页面栈的处理装置。图8是根据本申请实施例的一种可选的页面栈的处理装置的结构框图,如图8所示,该装置可以包括:
第一确定单元802,用于根据待打开的第一页面的第一页面地址,确定第一页面为目标类型的页面,其中,目标类型的页面为使用两个渲染引擎交替进行渲染的页面;
第二确定单元804,与第一确定单元802相连,用于在两个渲染引擎已与页面栈中目标类型的两个页面分别建立关联的情况下,从两个渲染引擎中确定出第一渲染引擎,其中,第一渲染引擎为与两个页面中先打开的页面所关联的渲染引擎;
第一渲染单元806,与第二确定单元804相连,用于使用第一渲染引擎对第一页面进行渲染,以跳转至显示第一页面。
需要说明的是,该实施例中的第一确定单元802可以用于执行上述步骤S202,该实施例中的第二确定单元804可以用于执行上述步骤S204,该实施例中的第一渲染单元806可以用于执行上述步骤S206。
通过上述模块,根据待打开的第一页面的第一页面地址,确定第一页面为目标类型的页面,其中,目标类型的页面为使用两个渲染引擎交替进行渲染的页面;在两个渲染引擎已与页面栈中目标类型的两个页面分别建立关联的情况下,从两个渲染引擎中确定出第一渲染引擎,其中,第一渲染引擎为与两个页面中先打开的页面所关联的渲染引擎;使用第一渲染引擎对第一页面进行渲染,以跳转至显示第一页面,解决了相关技术中页面栈的处理方法存在由于对页面栈中的每个页面都采用一个渲染引擎进行渲染导致的渲染引擎占用内存过多的问题,减少了渲染引擎的内存占用,提高了内存资源的利用率。
在一个示例性实施例中,第二确定单元包括:
查找模块,用于沿着目标方向依次查找页面栈中的各个页面,其中,目标方向为由页面栈的栈顶到页面栈的栈底的方向;
第一确定模块,用于在从页面栈中查找到目标类型的两个页面的情况下,将两个渲染引擎中与两个页面中后一个查找到的页面关联的渲染引擎,确定为第一渲染引擎。
在一个示例性实施例中,上述装置还包括:
第三确定单元,用于在根据待打开的第一页面的第一页面地址,确定第一页面为目标类型的页面之后,在两个渲染引擎存在未与页面栈中的目标类型的页面关联的渲染引擎的情况下,从两个渲染引擎中确定出第二渲染引擎,其中,第二渲染引擎为未与页面栈中的页面关联的渲染引擎;
第二渲染单元,用于使用第二渲染引擎对第一页面进行渲染,以跳转至显示第一页面。
在一个示例性实施例中,第一渲染单元包括:
解除模块,用于解除第一渲染引擎与两个页面中先打开的页面之间的关联;
建立模块,用于建立第一渲染引擎与第一页面之间的关联,其中,建立关联后的第一渲染引擎用于对第一页面进行渲染。
在一个示例性实施例中,上述装置还包括:
第四确定单元,用于在使用第一渲染引擎对第一页面进行渲染之后,根据待关闭的第二页面的第二页面地址,确定第二页面为目标类型的页面,其中,第二页面是两个渲染引擎中的第三渲染引擎所关联的页面;
解除单元,用于在页面栈中存在未与两个渲染引擎中的任一个渲染引擎关联的、目标类型的第三页面的情况下,解除第三渲染引擎与第二页面之间的关联;
建立单元,用于建立第三渲染引擎与第三页面之间的关联。
在一个示例性实施例中,上述装置还包括:
查找单元,用于在根据待关闭的第二页面的第二页面地址,确定第二页面为目标类型的页面之后,沿着目标方向依次查找页面栈中的各个页面,其中,目标方向为由页面栈的栈顶到页面栈的栈底的方向;
第五确定单元,用于将查找到的第一个未与两个渲染引擎中的任一个渲染引擎关联的、目标类型的页面,确定为第三页面。
在一个示例性实施例中,第一确定单元包括:
解析模块,用于从第一页面地址进行解析,得到第一页面地址的页面地址前缀,其中,页面地址前缀用于标识第一页面地址所使用的网络协议;
第二确定模块,用于在页面地址前缀与目标类型对应的页面地址特征匹配的情况下,确定第一页面为目标类型的页面。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。
根据本申请实施例的又一个方面,还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行本申请实施例中上述任一项页面栈的处理方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
S1,根据待打开的第一页面的第一页面地址,确定第一页面为目标类型的页面,其中,目标类型的页面为使用两个渲染引擎交替进行渲染的页面;
S2,在两个渲染引擎已与页面栈中目标类型的两个页面分别建立关联的情况下,从两个渲染引擎中确定出第一渲染引擎,其中,第一渲染引擎为与两个页面中先打开的页面所关联的渲染引擎;
S3,使用第一渲染引擎对第一页面进行渲染,以跳转至显示第一页面。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例中对此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、ROM、RAM、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
根据本申请实施例的又一个方面,还提供了一种用于实施上述页面栈的处理方法的电子装置,该电子装置可以是服务器、终端、或者其组合。
图9是根据本申请实施例的一种可选的电子装置的结构框图,如图9所示,包括处理器902、通信接口904、存储器906和通信总线908,其中,处理器902、通信接口904和存储器906通过通信总线908完成相互间的通信,其中,
存储器906,用于存储计算机程序;
处理器902,用于执行存储器906上所存放的计算机程序时,实现如下步骤:
S1,根据待打开的第一页面的第一页面地址,确定第一页面为目标类型的页面,其中,目标类型的页面为使用两个渲染引擎交替进行渲染的页面;
S2,在两个渲染引擎已与页面栈中目标类型的两个页面分别建立关联的情况下,从两个渲染引擎中确定出第一渲染引擎,其中,第一渲染引擎为与两个页面中先打开的页面所关联的渲染引擎;
S3,使用第一渲染引擎对第一页面进行渲染,以跳转至显示第一页面。
可选地,通信总线可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线、或EISA(Extended Industry Standard Architecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于上述电子装置与其他设备之间的通信。
存储器可以包括RAM,也可以包括非易失性存储器(non-volatile memory),例如,至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
作为一种示例,上述存储器906中可以但不限于包括上述页面栈的处理装置中的第一确定单元802、第二确定单元804以及第一渲染单元806。此外,还可以包括但不限于上述页面栈的处理装置中的其他模块单元,本示例中不再赘述。
上述处理器可以是通用处理器,可以包含但不限于:CPU(Central ProcessingUnit,中央处理器)、NP(Network Processor,网络处理器)等;还可以是DSP(DigitalSignal Processing,数字信号处理器)、ASIC(Application Specific IntegratedCircuit,专用集成电路)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图9所示的结构仅为示意,实施上述页面栈的处理方法的设备可以是终端设备,该终端设备可以是智能手机、平板电脑、掌上电脑以及MID、PAD等终端设备。图9其并不对上述电子装置的结构造成限定。例如,电子装置还可包括比图9中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图9所示的不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、ROM、RAM、磁盘或光盘等。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例中所提供的方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (10)

1.一种页面栈的处理方法,其特征在于,包括:
根据待打开的第一页面的第一页面地址,确定所述第一页面为目标类型的页面,其中,所述目标类型的页面为使用两个渲染引擎交替进行渲染的页面;在所述两个渲染引擎已与页面栈中所述目标类型的两个页面分别建立关联的情况下,从所述两个渲染引擎中确定出第一渲染引擎,其中,所述第一渲染引擎为与所述两个页面中先打开的页面所关联的渲染引擎;
使用所述第一渲染引擎对所述第一页面进行渲染,以跳转至显示所述第一页面。
2.根据权利要求1所述的方法,其特征在于,所述从所述两个渲染引擎中确定出第一渲染引擎包括:
沿着目标方向依次查找所述页面栈中的各个页面,其中,所述目标方向为由所述页面栈的栈顶到所述页面栈的栈底的方向;
在从所述页面栈中查找到所述目标类型的所述两个页面的情况下,将所述两个渲染引擎中与所述两个页面中后一个查找到的页面关联的渲染引擎,确定为所述第一渲染引擎。
3.根据权利要求1所述的方法,其特征在于,在所述根据待打开的第一页面的第一页面地址,确定所述第一页面为目标类型的页面之后,所述方法还包括:
在所述两个渲染引擎存在未与所述页面栈中的所述目标类型的页面关联的渲染引擎的情况下,从所述两个渲染引擎中确定出第二渲染引擎,其中,所述第二渲染引擎为未与所述页面栈中的页面关联的渲染引擎;
使用所述第二渲染引擎对所述第一页面进行渲染,以跳转至显示所述第一页面。
4.根据权利要求1所述的方法,其特征在于,所述使用所述第一渲染引擎对所述第一页面进行渲染包括:
解除所述第一渲染引擎与所述两个页面中先打开的页面之间的关联;
建立所述第一渲染引擎与所述第一页面之间的关联,其中,建立关联后的所述第一渲染引擎用于对所述第一页面进行渲染。
5.根据权利要求1所述的方法,其特征在于,在使用所述第一渲染引擎对所述第一页面进行渲染之后,所述方法还包括:
根据待关闭的第二页面的第二页面地址,确定所述第二页面为所述目标类型的页面,其中,所述第二页面是所述两个渲染引擎中的第三渲染引擎所关联的页面;
在所述页面栈中存在未与所述两个渲染引擎中的任一个渲染引擎关联的、所述目标类型的第三页面的情况下,解除所述第三渲染引擎与所述第二页面之间的关联,并建立所述第三渲染引擎与所述第三页面之间的关联。
6.根据权利要求5所述的方法,其特征在于,在所述根据待关闭的第二页面的第二页面地址,确定所述第二页面为所述目标类型的页面之后,所述方法还包括:沿着目标方向依次查找所述页面栈中的各个页面,其中,所述目标方向为由所述页面栈的栈顶到所述页面栈的栈底的方向;
将查找到的第一个未与所述两个渲染引擎中的任一个渲染引擎关联的、所述目标类型的页面,确定为所述第三页面。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述根据待打开的第一页面的第一页面地址,确定所述第一页面为目标类型的页面,包括:
从所述第一页面地址进行解析,得到所述第一页面地址的页面地址前缀,其中,所述页面地址前缀用于标识所述第一页面地址所使用的网络协议;
在所述页面地址前缀与所述目标类型对应的页面地址特征匹配的情况下,确定所述第一页面为所述目标类型的页面。
8.一种页面栈的处理装置,其特征在于,包括:
第一确定单元,用于根据待打开的第一页面的页面地址标识,确定所述第一页面为目标类型的页面,其中,所述目标类型的页面为使用两个渲染引擎交替进行渲染的页面;
第二确定单元,用于在所述两个渲染引擎中的每个渲染引擎均已与页面栈中的一个所述目标类型的页面关联的情况下,从所述两个渲染引擎中确定出第一目标引擎,其中,所述第一目标引擎为两个页面中先打开的页面所对应的渲染引擎;
第一渲染单元,用于使用所述第一渲染引擎对所述第一页面进行渲染,以跳转至显示所述第一页面。
9.一种计算机可读的存储介质,其特征在于,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行权利要求1至7中任一项所述的方法。
10.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行权利要求1至7中任一项所述的方法。
CN202111267000.4A 2021-10-28 2021-10-28 页面栈的处理方法和装置、存储介质及电子装置 Pending CN114089997A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111267000.4A CN114089997A (zh) 2021-10-28 2021-10-28 页面栈的处理方法和装置、存储介质及电子装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111267000.4A CN114089997A (zh) 2021-10-28 2021-10-28 页面栈的处理方法和装置、存储介质及电子装置

Publications (1)

Publication Number Publication Date
CN114089997A true CN114089997A (zh) 2022-02-25

Family

ID=80298065

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111267000.4A Pending CN114089997A (zh) 2021-10-28 2021-10-28 页面栈的处理方法和装置、存储介质及电子装置

Country Status (1)

Country Link
CN (1) CN114089997A (zh)

Similar Documents

Publication Publication Date Title
CN110020292B (zh) 网页内容提取方法以及终端设备
CN105938477B (zh) 用于整合和格式化搜索结果的方法和系统
KR102504075B1 (ko) 사용자 디바이스 이벤트의 매칭 및 속성
KR102006396B1 (ko) 브라우징 액티비티에 기초하여 정합 애플리케이션을 식별하는 기법
CN110688598B (zh) 业务参数采集方法、装置、计算机设备和存储介质
US9235451B2 (en) Browser kernel switching method
KR101922037B1 (ko) 페이지 조작 처리 방법 및 장치, 그리고 단말기
US10936645B2 (en) Method and apparatus for generating to-be-played multimedia content
CN107423070B (zh) 一种页面生成方法及装置
US20080189028A1 (en) Intelligent location-to-cell mapping using annotated media
CN107291759B (zh) 浏览器页面资源的处理方法和装置
CN111866158B (zh) 路由方法、装置、计算机设备和存储介质
CN109343926A (zh) 应用程序图标的显示方法、装置、终端和存储介质
CN108900554B (zh) Http协议资产检测方法、系统、设备及计算机介质
CN112256772A (zh) 数据服务方法、装置以及可读存储介质
CN106534280B (zh) 数据分享方法及装置
JP2014531664A (ja) モバイル環境における漸進的パターンマッチングのための方法および装置
CN113590968A (zh) 资源推荐方法、装置、计算机设备及存储介质
KR101777035B1 (ko) 주소 필터링 방법, 장치, 프로그램 및 기록매체
CN108600255B (zh) Mock服务管理方法、装置、计算机设备以及存储介质
US9485330B2 (en) Web browser operation method and system
KR20150029719A (ko) 웹 브라우저 동작 방법 및 시스템
CN110851346A (zh) 查询语句边界问题的检测方法、装置、设备及存储介质
CN114089997A (zh) 页面栈的处理方法和装置、存储介质及电子装置
CN114896543A (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