一种小程序状态管理库的页面管理方法和系统与流程

文档序号:26003675发布日期:2021-07-23 21:21阅读:112来源:国知局
一种小程序状态管理库的页面管理方法和系统与流程

本发明涉及小程序的状态管理库的技术领域,具体涉及一种小程序状态管理库的页面管理方法和系统。



背景技术:

小程序(miniprogram),是指一种基于特定编程语言开发完成,无需下载和安装,就可以使用的应用(application,app)。小程序的最大特点是使用便捷,无需手动在移动端的操作系统中安装,通常小程序依托于大型app作为载体进行使用。在对小程序的渲染过程中,需要将前端组件及客户端原生组件糅合在同一页面内。

相关技术中,前端组件和客户端原生组件分层渲染,前端组件由浏览器内核在网页视图webview层中渲染、客户端原生组件由小程序客户端在手机原生布局上渲染,然后通过坐标系统保证两者相对布局符合开发者要求。小程序前端框架根据开发者的页面布局,将客户端原生组件的位置、属性等信息通知到客户端,客户端根据这些信息将客户端原生组件添加到客户端原生根视图的指定位置,从而小程序的视图页面的渲染。

申请人经过研究后发现,现有的小程序存在如下的不足:

1.现有的小程序在运行时,其所有视图页面的状态信息同时进行渲染,且视图页面的内容变更时,需要同时变更,对内存资源的占用较大,提高用户终端出现内存膨胀的风险。

2.现有的小程序,在重复打开视图页面时,仍然对已销毁的视图页面进行维护,使已销毁的视图页面继续占用内存,进而使得小程序后台臃肿,容易造成内存膨胀。



技术实现要素:

为了克服上述现有的小程序渲染时占用内存资源较多的技术缺陷,本发明提供一种不影响正常使用的情况下,渲染占用资源少的小程序状态管理库的页面管理方法和系统。

为了解决上述问题,本发明按以下技术方案予以实现的:

本发明所述一种小程序状态管理库的页面管理方法,其特征在于,包括:

获取状态信息,对状态信息进行分析后,根据分类规则,将状态信息分类至数据状态层和视图状态层,并挂载到相应的视图页面;

渲染视图状态层中当前的视图页面所挂载的状态信息;

分别对各视图页面设置生命周期函数和渲染标识;

根据生命周期函数和渲染标识的结合,依次将视图状态层中的状态信息渲染至相应的视图页面;

在小程序页面栈中检测视图页面,出栈其中已废弃的视图页面。

优选地,所述渲染标识,包括渲染顺序和变更信息,所述变更信息为视图页面中具体显示内容的渲染变更的信息。

优选地,所述设置渲染标识后,还执行渲染标识中的变更信息的判断,具体为:依次判断视图页面对应的变更信息的内容是否空白:若是,则不进行对应视图页面的更新渲染;若否,则将状态信息进行相应的更改并合并渲染到相应的视图页面。

优选地,所述对状态信息进行分析,具体为基于状态信息与相应的视图页面进行匹配,根据所匹配的视图页面,对状态信息进行相应的分类。

优选地,所述生命周期函数为onshow函数或onload函数中的一种。

优选地,所述在小程序页面栈中检测已废弃的视图页面前,具体包括:执行废弃实例出栈并不再进行状态维护。

优选地,所述已废弃的视图页面为重复数量大于预设数量的视图页面,或已被销毁的视图页面。

所述重复页面出栈规则为,当相同的视图页面的数量大于预设次数时,从小程序页面栈中对重复的视图页面进行出栈,仅保留最近的一个相同视图页面。

本发明还公开一种小程序状态管理库的页面管理系统,包括:

分类模块,用于获取状态信息,对状态信息进行分析后,根据分类规则,将状态信息分类至数据状态层和视图状态层,并挂载到相应的视图页面;

优先渲染模块,用于渲染视图状态层中当前的视图页面所挂载的状态信息;

渲染设置模块,用于分别对各视图页面设置生命周期函数和渲染标识;

延迟渲染模块,用于根据生命周期函数和渲染标识的结合,依次将视图状态层中的状态信息渲染至相应的视图页面;

废弃检测模块,用于在小程序页面栈中检测视图页面,出栈其中已废弃的视图页面。

本发明还公开一种存储介质,存储有计算机程序,所述计算机程序被处理器执行时,实现上述方法的步骤。

本发明还公开一种电子设备,至少包括存储器、处理器,所述存储器上存储有计算机程序,所述处理器在执行所述存储器上的计算机程序时,实现上述方法的步骤。

与现有技术相比,本发明的有益效果是:

1.本发明通过将状态信息分类至数据状态层和视图状态层,且只立即执行渲染当前显示的视图页面,其余视图页面在预设的范围内依次进行更新渲染,从而降低小程序视图页面渲染对内存的占用,能有效地降低小程序所占用的内存资源。

2.本发明通过对小程序页面栈中进行检测已废弃的视图页面的步骤,可及时地出栈其中已废弃的视图页面,从而停止已废弃的视图页面持续的更新渲染,能显著地降低小程序所占用的内存资源。

附图说明

下面结合附图对本发明的具体实施方式作进一步详细的说明,其中:

图1是本发明的小程序状态管理库的页面管理方法的主要流程示意图;

图2是本发明的小程序状态管理库的页面管理方法的整体流程示意图

图3是本发明的小程序状态管理库的页面管理系统的示意图;

图中所示的内容在具体实施方式中进行详细的说明。

具体实施方式

以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

本申请实施例针对相关技术中,在小程序使用过程中,对后台的所有页面实例进行实时渲染,占用大量的内存资源;或者,当小程序在运行过程中重复打开相同的页面时,打开的顺序依次记录小程序的页面,在后台占用较多的内存资源。存在的影响小程序的内存占用率,增加内存膨胀率,严重影响用户体验的问题,提出一种小程序状态管理库的页面管理方法和系统。

如图1~图3所示,本发明所述的小程序状态管理库的页面管理方法和系统的优选的示意图。

为了保持本公开实施例的以下说明清楚且简明,本公开省略了已知功能和已知部件的详细说明。本发明中的小程序通过用户终端安装相应的应用程序,在应用程序中打开相应的小程序以实现小程序的页面管理。用户终端为可安装应用程序的电子设备。

第一方面,如图1和图2所示,本发明公开了一种小程序状态管理库的页面管理方法,用于解决上述现有的小程序存在的内存膨胀的问题,具体包括以下步骤:

步骤s1:获取状态信息,对状态信息进行分析后,根据分类规则,将状态信息分类至数据状态层和视图状态层,并挂载到相应的视图页面。

具体地,用户终端启动相应的应用程序,在应用程序中打开相应的小程序,用户终端显示并渲染该小程序的首页,并获取该小程序相应的状态信息。基于状态信息与相应的视图页面进行匹配,根据所匹配的视图页面,以获取状态信息相应匹配的视图页面,根据相应的状态信息所匹配的视图页面,获知状态信息的所应该归类的状态层。或者,根据状态信息的内容,在命名时加入相应的关键词以方便分类。其中,将需要改变视图页面显示,需要进行渲染更新的状态信息,标记后存储到视图状态层;将不需要改变视图页面显示,只改变数据内容的状态信息,标记后存储到数据状态层中。然后将状态信息根据相关性,挂载到相应的视图页面。

步骤s2:渲染视图状态层中当前的视图页面所挂载的状态信息。

具体地,在将状态信息进行相应的分类后,获取用户终端当前所显示的小程序视图页面,针对当前显示的视图页面,获取视图状态层中相应的状态信息,对相应的状态信息进行解析后,渲染至所挂载的视图页面中,以实现对当前的视图页面的视图更新渲染,确保不影响小程序的正常使用。当更新的状态信息为数据状态层中的状态信息时,对数据视图层中的状态信息执行全局的同时更新,但不执行视图页面的渲染更新。

步骤s3:分别对各视图页面设置生命周期函数和渲染标识。

具体地,设置视图页面渲染的生命周期函数,并根据视图的渲染情况,设置相应的渲染标识,本实施例优选地,生命周期函数为onshow函数。onshow函数为页面显示或从后台跳回小程序时显示此页面时触发,以及从跳转页面返回时触发的小程序的生命周期函数。onshow函数触发时,进行对所触发的视图页面对应的状态信息的渲染。当用户打开对应的视图页面触发生命周期函数时,更改渲染顺序,优先对该视图页面进行更新渲染。其余视图在生命周期内依次渲染,依次渲染能有效地降低内存的占用率,防止因同时渲染大量视图页面而产生的内存膨胀。或者,生命周期函数为onload函数,用户可根据小程序的实际需要进行相应的生命周期函数设置。

同时,对视图状态层中的状态信息设置渲染标识,渲染标识为非当前视图页面的状态信息,渲染至其对应的视图页面的先后顺序所依据的标识。作为一种优选实施方式,渲染标识,包括渲染顺序和变更信息,所述变更信息为视图页面中具体显示内容的渲染变更的信息。渲染变更的具体视图改变,能提高渲染更新的速度。

优选地,还执行子步骤s31,子步骤s31具体为:

依次判断视图页面对应的变更信息的内容是否空白:若是,则不进行对应视图页面的更新渲染;若否,则将状态信息进行相应的更改并合并渲染到相应的视图页面。

具体地,在进行渲染更新前,对变更信息中的内容进行解析,若解析后,发现视图页面并未因状态信息的改变而发生视图内容上的显示改变,即变更信息的内容为空,则跳过本次视图页面的更新渲染;若变更内容不为空,表明状态信息改变了视图页面的显示内容,则进行下一步的。通过设置和判断变更信息,能在不影响小程序正常运行的情况下,降低视图页面渲染的总次数,进一步地降低渲染所占用的内存资源。

步骤s4:根据生命周期函数和渲染标识的结合,依次将视图状态层中的状态信息渲染至相应的视图页面;

根据生命周期函数和渲染标识,能获取视图页面的更新渲染顺序和更新渲染的生命周期的时间范围。从而在视图状态层中,根据渲染顺序,获取相应的状态信息,在用户终端和小程序的内存占用较低时,对后台的小程序视图页面进行依次的渲染更新,将更新的内容顺序地渲染至视图页面上,从而避免出现同时渲染占用大量内存的情况,提高小程序的整体运行速度,提高用户的使用体验。

步骤s5:在小程序页面栈中检测视图页面,出栈其中已废弃的视图页面。

具体地,视图页面在打开后,会根据顺序依次进入到小程序页面栈中,当用户重复点开视图页面时,已废弃的页面仍保留在页面栈中持续进行更新渲染,会使小程序页面栈臃肿,因此,本发明在更新渲染后,还对小程序的页面栈进行重复视图页面的检测,当检测到重复的视图页面时,对视图页面进行出栈操作,从而在不影响小程序正常运行的情况下,降低所需要渲染更新的视图页面的总数,进一步地降低小程序对内存的占用。

优选地,所述在小程序页面栈中检测视图页面前,执行:配置已废弃页面出栈规则。其中,所述已废弃页面出栈规则为,当页面栈中相同的视图页面的数量大于预设次数时,或页面已确认废弃时,从小程序页面栈中对已废弃的视图页面进行出栈,仅保留最近的一个相同视图页面。具体地,如将预设的次数设置为2,当小程序页面栈中,存在大于2个相同的视图页面时,执行已废弃页面的出栈,已废弃的视图页面出栈后不再执行更新渲染且不再占用后台内存。

此外,重复页面的出栈规则还可设置为,当小程序的内存占用率大于预设值时,出栈靠前的视图页面的,不再对出栈后的视图页面进行更新和渲染,从而降低小程序的内存占用。

本发明所述的小程序状态管理库的页面管理方法的工作原理是:

一方面,本发明通过将状态信息分类至数据状态层和视图状态层,且只立即执行渲染当前显示的视图页面,其余视图页面在预设的范围内依次进行更新渲染,从而降低小程序视图页面渲染对内存的占用,能有效地降低小程序所占用的内存资源。另一方面,本发明通过对小程序页面栈中进行检测视图页面的步骤,可及时地出栈其中已废弃的视图页面,从而停止已废弃的视图页面的更新渲染,能显著地降低小程序所占用的内存资源。

本实施例所述的小程序状态管理库的页面管理方法的其它步骤参见现有技术。

第二方面,如图3所示,本发明还公开一种小程序状态管理库的页面管理系统,包括:

分类模块m1,用于获取状态信息,对状态信息进行分析后,根据分类规则,将状态信息分类至数据状态层和视图状态层,并挂载到相应的视图页面。

优先渲染模块m2,用于渲染视图状态层中当前的视图页面所挂载的状态信息。

渲染设置模块m3,用于分别对各视图页面设置生命周期函数和渲染标识。

延迟渲染模块m4,用于根据生命周期函数和渲染标识的结合,依次将视图状态层中的状态信息渲染至相应的视图页面。

废弃检测模块m5,用于在小程序页面栈中检测视图页面,出栈其中已废弃的视图页面。

第三方面,本发明还公开一种存储介质,存储有计算机程序,所述计算机程序被处理器执行时,具体实现以下步骤:获取状态信息,对状态信息进行分析后,根据分类规则,将状态信息分类至数据状态层和视图状态层,并挂载到相应的视图页面;渲染视图状态层中当前的视图页面所挂载的状态信息;分别对各视图页面设置生命周期函数和渲染标识;根据生命周期函数和渲染标识的结合,依次将视图状态层中的状态信息渲染至相应的视图页面;在小程序页面栈中检测视图页面,出栈其中已废弃的视图页面。

第四方面,本发明还公开一种电子设备,至少包括存储器、处理器,所述存储器上存储有计算机程序,所述处理器在执行所述存储器上的计算机程序时,具体实现以下的步骤:获取状态信息,对状态信息进行分析后,根据分类规则,将状态信息分类至数据状态层和视图状态层,并挂载到相应的视图页面;渲染视图状态层中当前的视图页面所挂载的状态信息;分别对各视图页面设置生命周期函数和渲染标识;根据生命周期函数和渲染标识的结合,依次将视图状态层中的状态信息渲染至相应的视图页面;在小程序页面栈中检测视图页面,出栈其中已废弃的视图页面。

在一些实施方式中,客户端、服务器可以利用诸如http(hypertexttransferprotocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(lan)、广域网(wan)、网际网(例如,互联网)以及端对端网络(例如,adhoc端对端网络),以及任何当前已知或未来研发的网络。

上述存储介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。

上述存储介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:获取状态信息,对状态信息进行分析后,根据分类规则,将状态信息分类至数据状态层和视图状态层,并挂载到相应的视图页面;渲染视图状态层中当前的视图页面所挂载的状态信息;分别对各视图页面设置生命周期函数和渲染标识;根据生命周期函数和渲染标识的结合,依次将视图状态层中的状态信息渲染至相应的视图页面;在小程序页面栈中检测视图页面,出栈其中已废弃的视图页面。

或者,上述存储介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:获取状态信息,对状态信息进行分析后,根据分类规则,将状态信息分类至数据状态层和视图状态层,并挂载到相应的视图页面;渲染视图状态层中当前的视图页面所挂载的状态信息;分别对各视图页面设置生命周期函数和渲染标识;根据生命周期函数和渲染标识的结合,依次将视图状态层中的状态信息渲染至相应的视图页面;在小程序页面栈中检测视图页面,出栈其中已废弃的视图页面。

可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

需要说明的是,本公开上述的存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何存储介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。

本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、片上系统(soc)、复杂可编程逻辑设备(cpld)等等。

在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。

尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。

以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,故凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

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