CN108021614A - 一种用于页面动态加载的方法及系统 - Google Patents
一种用于页面动态加载的方法及系统 Download PDFInfo
- Publication number
- CN108021614A CN108021614A CN201711069904.XA CN201711069904A CN108021614A CN 108021614 A CN108021614 A CN 108021614A CN 201711069904 A CN201711069904 A CN 201711069904A CN 108021614 A CN108021614 A CN 108021614A
- Authority
- CN
- China
- Prior art keywords
- page
- resource
- server
- latest edition
- logic
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请公开了一种用于页面动态加载的方法及系统,所述方法包括:通过页面容器,从最新版本的页面资源中获取页面布局和页面逻辑类;渲染所述页面布局和加载所述页面逻辑类。本申请的方法可实现页面动态加载,运行效率高。本申请还提供一种页面资源预加载方法及用于获取最新版本的页面资源的方法。
Description
本申请要求于2017年08月18日提交中国专利局、申请号为201710713449.6、发明名称为“一种用于页面动态加载的方法及系统”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及移动应用领域,具体涉及一种用于页面动态加载的方法。本申请同时涉及一种用于页面动态加载的装置,一种用于页面加载的方法,一种页面资源预加载方法,一种最新版本的页面资源获取的方法,一种页面动态加载系统,一种用于实现用于页面动态加载的方法的电子设备,以及一种用于实现用于页面动态加载的方法的存储设备。
背景技术
随着互联网和移动应用的迅速发展,各种运行于手机或其他智能移动终端的应用软件层出不穷,其功能也越来越多样化,应用场景日益丰富。由于移动应用不同于传统的Web应用,移动应用的更新需要重新下载新的版本,频繁的更新软件会严重影响用户体验,并且,这些基于智能移动终端原生系统开发的应用产品从立项到在应用软件商店发布审批时间长,需要必要的版本控制和发布节奏,然而移动应用显著的行业特点是开发周期短、业务变化快、需要快速迭代及实时调整,从而适应多元化的用户需求,因此迫切需要不依赖于安装程序包的更新而能进行动态化更新业务的技术,例如对于电商,就具备快速迭代、实时调整的业务特点,动态更新技术对其具有重要意义。
现有的客户端动态化技术包括以下两类:一是基于HTML5的web页面动态化加载;二是类似React Native的客户端动态化解决方案。
基于HTML5的web页面动态化加载,调用系统的浏览器内核,使用JavaScript语言异步请求后台JavaScript文件,并将请求返回的后台文件动态添加到页面,根据手机操作系统类型及手机类型,判断手机屏幕大小,动态调整页面布局,此类方法实质是基于浏览器运行脚本语言,相当于在网页中操作,并且基于DOM模型(DOM,即Document Object Model,文档对象模板),有大量DOM树操作,其页面绘制效率低,例如在页面绘制上局部刷新场景也需要重新绘制,因此存在运行效率低的问题。
类似React Native的客户端动态化解决方案,是由原生、JSBridge、JavaScript三个部分构成,所谓原生是指应用智能移动终端整个系统所使用的开发语言开发的、直接基于系统运行的部分,例如,iOS运行Object-C代码,Android上运行Java代码。该方案中,没有采用DOM树,UI(User Interface,即用户界面)是原生的,所以性能比HTML5优胜很多。应用运行时,原生部分运行在主线程上,处理UI渲染,事件响应;JavaScript部分,运行在JavaScript引擎的线程上,处理业务逻辑,例如显示哪个界面,以及如何给页面加样式,这样不需要发布即能更新页面;原生和JavaScript两部分独立运行没有性能问题,但是瓶颈在于处理过程中JavaScript和原生语言进行通讯,需要通过JSBridge做序列化和反序列化,查找模块,调用模块等各种逻辑,最终可能导致UI层卡顿,另外如果JavaScript侧发起UI更新,更新时会向原生侧同步大量的UI结构和数据,常常导致性能问题,尤其是界面复杂、变动数据大的情况下。
现有的两类方案,主要是利用JavaScript语言实现的页面动态更新,效率上自然不如原生语言,并且没有完善的缓存及更新机制,导致存在运行效率低、没有完备的资源预加载方案以及页面更新后打开速度慢的问题。
发明内容
本申请提供一种用于页面动态加载的方法,使用智能移动终端的原生开发语言实现页面动态加载,以解决现有的页面动态加载方案中的运行效率低、没有完备的资源预加载方案以及页面更新后打开速度慢的问题。
本申请还提供一种用于页面加载的方法。本申请还提供一种页面资源预加载方法。本申请还提供一种最新版本的页面资源获取的方法。本申请还提供一种页面动态加载系统。本申请还提供一种用于页面动态加载的装置。本申请还提供一种实现用于页面动态加载的方法的电子设备。本申请还提供一种实现用于页面动态加载的方法的存储设备。
本申请提供的一种用于页面动态加载的方法,其包括:
通过页面容器,从最新版本的页面资源中获取页面布局和页面逻辑类;
渲染所述页面布局和加载所述页面逻辑类;
其中,所述页面资源,是采用设定组织形式进行组织的页面布局文件和页面逻辑文件;所述页面容器,是用于实现在页面生命周期中插入执行逻辑的功能模块。
可选的,所述设定组织形式,至少包括下述任一种组织形式:
每个页面布局文件只包含一个页面布局;
每个页面布局文件包含多个页面布局;
每个页面逻辑文件只包含一个逻辑类;
每个页面逻辑文件包含多个逻辑类;
多个页面布局和多个逻辑类包含在一个文件中;该文件为一个页面描述文件。
可选的,所述页面容器,提供至少一个开发接口以实现在页面生命周期中插入执行逻辑;其中,所述开发接口,至少定义下述方法:获取页面布局、页面创建后、页面开始初始化。
可选的,所述最新版本的页面资源,是通过下述方法获取的:
根据页面路由检查本地缓存空间中是否已预加载最新版本的页面资源;
若否,根据页面路由从服务端获取最新版本的页面资源;
其中,所述页面路由,至少包括通过下述任一种协议指定其页面资源:
URI;
URL;
URN;并且,在网络中使用SSL或TSL安全协议传输。
可选的,所述根据页面路由检查本地缓存空间中是否已预加载最新版本的页面资源,其中,所述预加载最新版本的页面资源,包括下述处理步骤:
通过页面容器接收服务端下发的资源更新消息;所述资源更新消息,包含页面资源列表及相应的资源地址;
根据接收到的资源更新消息,从服务端下载相应资源,并将这些资源保存到本地存储空间。
可选的,在所述通过页面容器接收服务端下发的资源更新消息的步骤之前,至少包括采用下述任一种方式触发服务端下发所述资源更新消息:
服务端主动向客户端推送资源更新消息;
根据定时触发策略,通过所述页面容器定时向服务端发送是否有资源更新的请求消息;若有,则触发服务端下发资源更新消息。
可选的,所述定时触发策略,是指客户端每隔设定时间间隔触发一次资源更新;至少包括下述任一种触发策略:
每次启动时向服务端请求是否有资源更新;
运行中每隔一定时间后向服务端请求是否有资源更新;
运行中在用户进行一定次数的点击操作后向服务端请求是否有资源更新;
运行中在用户进行一定次数的页面跳转操作后向服务端请求是否有资源更新。
可选的,所述时间间隔,采用下述任一种方式设置:
由服务端下发该时间间隔;
由客户端在程序中设置该时间间隔。
可选的,所述根据页面路由从服务端获取最新版本的页面资源,包括下述处理步骤:
根据页面路由信息进入所述页面容器的一个页面,从页面路由信息中获取页面资源名称;
向服务端请求该页面资源名称所对应的页面资源的最新的版本号;
接收服务端返回的所述页面资源的最新的版本号;
根据所述页面资源名称及其最新的版本号,检查本地缓存是否存在对应的最新版本的页面资源;
若否,向服务端请求所述最新版本的页面资源,并接收服务端返回的所述最新版本的页面资源。
可选的,所述版本号,是采用下述任一种形式所表示的版本信息:
顺序版本号;
页面资源文件的md5值。
可选的,所述页面资源,是使用数字签名加签的文件。
可选的,所述渲染所述页面布局和加载所述页面逻辑类,包括下述步骤:
校验所述页面资源的数字签名一致性;
从所述页面布局文件获取页面布局,调用系统的布局生成器渲染布局,获得页面视图并添加到系统窗口;
从所述页面逻辑文件获取逻辑类,并装载该逻辑类;
实例化所述逻辑类,获得逻辑对象;其中,所述逻辑类,提供支持在页面生命周期中插入自定义逻辑的方法。
可选的,所述校验所述页面资源的数字签名一致性,至少包括下述任一处理步骤:
校验所述页面布局文件的数字签名一致性;
校验所述页面逻辑文件的数字签名一致性。
可选的,所述数字签名是APK签名;所述页面逻辑文件是DEX文件;所述页面布局文件是XML文件。
可选的,所述渲染所述页面布局和加载所述页面逻辑类,包括下述执行顺序:
先加载所述页面逻辑类,再渲染所述页面布局。
可选的,所述页面容器,还用于提供页面路由功能,支持页面之间的地址跳转;所述页面路由是URI。
可选的,所述实现在页面生命周期中插入执行逻辑,包括如下步骤:
将页面布局文件和页面逻辑文件组合成一个页面描述文件;所述页面描述文件中包含了页面操作相关的事件处理或流程跳转逻辑的方法的声明;
由页面容器从所述页面描述文件中获取所述方法,并根据页面操作执行相应方法。
此外,本申请还提供一种用于页面加载的方法,其包括:
通过页面容器,从页面资源中获取页面布局和页面逻辑类;
渲染所述页面布局和加载所述页面逻辑类;
其中,所述页面资源,是采用设定组织形式进行组织的页面布局文件和页面逻辑文件;所述页面容器,是用于实现在页面生命周期中插入执行逻辑的功能模块;。
此外,本申请还提供一种用于页面资源预加载的方法,其包括:
通过页面容器接收服务端下发的资源更新消息;所述资源更新消息,包含页面资源列表及相应的资源地址;
根据接收到的资源更新消息,从服务端下载相应的页面资源,并将这些资源保存到本地存储空间。
可选的,所述通过页面容器接收服务端下发的资源更新消息,在此步骤之前,至少包括采用下述任一种方式触发服务端下发所述资源更新消息:
服务端主动向客户端推送资源更新消息;
根据定时触发策略,通过所述页面容器定时向服务端发送是否有资源更新的请求消息;
若有,则触发服务端下发资源更新消息。
可选的,所述定时触发策略,是指客户端每隔一定时间间隔触发一次资源更新;至少包括下述任一种触发策略:
每次启动时向服务端请求是否有资源更新;
运行中每隔一定时间后向服务端请求是否有资源更新;
运行中在用户进行一定次数的点击操作后向服务端请求是否有资源更新;
运行中在用户进行一定次数的页面跳转操作后向服务端请求是否有资源更新。
可选的,所述时间间隔,采用下述任一种方式设置:
由服务端下发该时间间隔;
由客户端在程序中设置该时间间隔。
此外,本申请还提供一种用于获取最新版本的页面资源的方法,其包括:
根据页面路由信息进入所述页面容器的一个页面,从页面路由信息中获取页面资源名称;
向服务端请求该页面资源名称所对应的页面资源的最新的版本号;
接收服务端返回的所述页面资源的最新的版本号;
根据所述页面资源名称及其最新的版本号,检查本地缓存是否存在对应的最新版本的页面资源;
若否,向服务端请求所述最新版本的页面资源,并接收服务端返回的所述最新版本的页面资源;其中,所述页面资源,是采用设定组织形式组织的页面布局文件和页面逻辑文件。
可选的,所述版本号,是采用下述任一种形式所表示的版本信息:
顺序版本号;
页面资源文件的md5值。
可选的,所述页面资源,是使用数字签名加签的文件。
可选的,所述设定组织形式,至少包括下述任一种组织形式:
每个页面布局文件只包含一个页面布局;
每个页面布局文件包含多个页面布局;
每个页面逻辑文件只包含一个逻辑类;
每个页面逻辑文件包含多个逻辑类;
多个页面布局和多个逻辑类包含在一个文件中。
此外,本申请还提供一种页面动态加载系统,其包括:
页面资源预加载模块、最新版本页面资源获取模块和页面资源加载模块,其中,
页面资源预加载模块,用于接收服务端下发的资源更新消息,根据接收到的资源更新消息,从服务端下载相应页面资源,并将这些页面资源保存到本地存储空间;所述资源更新消息,包含页面资源列表及相应的资源地址;
最新版本页面资源获取模块,用于在运行中根据页面路由获取最新版本的页面资源;
页面资源加载模块,用于在运行中加载所述最新版本的页面资源。
可选的,所述页面资源预加载模块,包括页面资源更新触发子模块,用于根据定时触发策略,向服务端发送是否有页面资源更新的请求消息;若有,则触发服务端下发资源更新消息。
可选的,所述页面资源预加载模块,还包括页面资源更新子模块,用于接收所述服务端下发的资源更新消息。
可选的,所述页面资源预加载模块,还包括页面资源缓存子模块,用于根据所述资源更新消息从服务端下载相应页面资源,将这些页面资源保存到本地缓存空间;所述资源更新消息,包含页面资源列表及相应的资源地址。
可选的,所述最新版页面资源获取模块,包括页面资源请求子模块,用于从页面路由信息中获取页面资源名称,向服务端请求该页面资源名称所对应的页面资源的最新的版本号,并接收服务端返回的所述页面资源的最新的版本号;根据所述页面资源名称及其最新的版本号,检查本地缓存空间是否存在对应的页面资源,若否,则向服务端请求所述页面资源名称及其最新的版本号所对应的页面资源,并接收服务端返回的最新版本的页面资源。
可选的,所述页面资源加载模块,包括页面资源校验子模块,用于校验所述页面资源的相关文件的数字签名一致性;其中,所述的页面资源的相关文件,是使用数字签名进行加签的文件,至少包括页面布局文件和页面逻辑文件。
此外,本申请还提供一种用于页面动态加载的装置,其包括:
页面资源解析单元,用于通过页面容器,从最新版本的页面资源中获取页面布局和页面逻辑类;所述页面资源,是采用设定组织形式进行组织的页面布局文件和页面逻辑文件;所述页面容器,是用于实现在页面生命周期中插入执行逻辑的功能模块;
页面资源加载单元,用于渲染所述页面布局和加载所述页面逻辑类。
此外,本申请还提供一种用于页面动态加载的电子设备,其包括:
存储器,以及处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:
通过页面容器,从最新版本的页面资源中获取页面布局和页面逻辑类;所述页面资源,是采用设定组织形式进行组织的页面布局文件和页面逻辑文件;所述页面容器,是用于实现在页面生命周期中插入执行逻辑的功能模块;
渲染所述页面布局和加载所述页面逻辑类。
此外,本申请还提供一种用于页面动态加载的存储设备,存储有指令,所述指令能够被处理器加载并执行以下步骤:
通过页面容器,从最新版本的页面资源中获取页面布局和页面逻辑类;所述页面资源,是采用设定组织形式进行组织的页面布局文件和页面逻辑文件;所述页面容器,是用于实现在页面生命周期中插入执行逻辑的功能模块;
渲染所述页面布局和加载所述页面逻辑类。
与现有技术相比,本申请具有以下优点:
本申请提供的用于页面动态加载的方法,通过通过页面容器,从最新版本的页面资源中获取页面布局和页面逻辑类;渲染所述页面布局和加载所述页面逻辑类;其中,所述页面资源,是采用设定组织形式进行组织的页面布局文件和页面逻辑文件;所述页面容器,是用于实现在页面生命周期中插入执行逻辑的功能模块。其页面动态加载相关功能使用智能移动终端系统的原生开发语言开发,使用智能移动终端原生系统内核,相当于直接在系统上操作,因此运行效率高,另外还提供完备的资源预加载及缓存能力,从而解决了现有的页面动态加载方案中的运行效率低、没有完备的资源预加载方案以及页面更新后打开速度慢的问题。
附图说明
图1是一种用于页面动态加载的方法的处理流程图;
图2是一种用于页面动态加载的方法的页面资源预加载处理流程图;
图3是一种用于页面动态加载的方法的页面资源预加载触发流程图;
图4是一种用于页面动态加载的方法的最新版本资源获取的处理流程图;
图5是一种用于页面动态加载的方法的资源加载处理流程图;
图6是一种用于页面动态加载的方法的交互时序图;
图7是一种用于页面动态加载的方法的实施例中涉及的安卓操作系统、页面容器以及移动应用页面的层次结构示意图;
图8是一种页面加载的方法的处理流程图;
图9是一种页面资源预加载的方法的处理流程图;
图10是一种最新版本页面资源获取的方法的处理流程图;
图11是一种页面动态加载系统的示意图;
图12是一种用于页面动态加载的装置的示意图;
图13是一种用于页面动态加载的电子设备的示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
本申请提供一种用于页面动态加载的方法。本申请还提供一种用于页面加载的方法。本申请还提供一种资源预加载方法。本申请还提供一种最新版本的页面资源获取的方法。本申请还提供一种页面动态加载系统。本申请同时涉及一种用于页面动态加载的装置,一种用于实现页面动态加载的方法的电子设备以及一种用于实现页面动态加载的方法的存储设备。在下面的实施例中逐一进行详细说明。
本申请其一实施例提供一种用于页面动态加载的方法。
以下结合图1至图7对本申请其一实施例提供的一种用于页面动态加载的方法的实施例进行说明。其中图1是本申请其一实施例提供的一种用于页面动态加载的方法的处理流程图;图2是本申请其一实施例提供的一种用于页面动态加载的方法的页面资源预加载处理流程图;图3是本申请其一实施例提供的一种用于页面动态加载的方法的页面资源预加载触发流程图;图4是本申请其一实施例提供的一种用于页面动态加载的方法的最新版本资源获取的处理流程图;图5是本申请其一实施例提供的一种用于页面动态加载的方法的资源加载处理流程图;图6是一种用于页面动态加载的方法的实施例中涉及的安卓操作系统、页面容器以及移动应用页面的层次结构示意图;图7是一种用于页面动态加载的方法的交互时序图。
移动应用产品由于面对多元化的用户需求,因而需要快速更新,业务变化快、持续集成、持续交付、快速迭代及实时调整是其显著的特征。因此动态加载页面对其具有重大意义。所谓动态加载页面,就是不依赖于安装程序包的更新而能进行动态化更新移动应用页面布局或业务的技术。通过动态加载页面,可以实现快改快推,尤其对于电商推出的活动之类的场景,能够让用户不需要下载安装包而实现产品业务的热更新,例如,每年双十一活动,淘宝和天猫的各条产品线都高度敏感,活动当天的任何一个状况都可能产生非常重大的影响,需要可以实时、灵活调整,尤其是卖家,装修店铺、打扮宝贝信息、布置好活动,都需要非常强的动态加载支撑。
本申请提供的实施例以基于Android系统的应用产品为例,实现了不依赖APK的更新发布,能够让用户在使用移动应用软件产品的过程中,不用下载APK安装包即能实现更新布局或者实现将包含新业务的页面更新到客户端。所谓APK(AndroidPackage),是Android的打包可安装的程序,APK主要由Dex文件和资源文件组成。Dex是DalvikVM executes的简称,即Android Dalvik执行程序,是Dalvik字节码,是Google对Java编译生成的.class二进制文件的一种优化,其可以被Android系统的JVM(即Java虚拟机)执行。所谓资源文件,是可以从中读取出需要的资源的文件,资源的类型可以是图片、音频、视频、文字资源或者其他可以在计算机中展示的内容等,在应用中根据需要向用户展示。需要说明的是,本申请提供的方法也可以在其它智能移动终端上实现,均在本申请保护范围内。
图1所示的一种用于页面动态加载的方法,包括:
步骤S101,通过页面容器,从最新版本的页面资源中获取页面布局和页面逻辑类;所述页面资源,是采用设定组织形式进行组织的页面布局文件和页面逻辑文件;所述页面容器,是用于实现在页面生命周期中插入执行逻辑的功能模块。
本申请提供的实施例中,所述页面容器是用原生开发语言开发的能够实现动态加载页面的一个接口组件,用于实现在页面生命周期中插入执行逻辑,是客户端引擎的一个主要模块。通过所述页面容器,移动应用可以实现完全动态加载并运行动态脚本,从而在交互过程中使得客户端从服务端获取页面,可以增减页面,改变功能及交互,不用重新安装应用产品就能实时生效。所谓原生开发语言,是指开发运行于智能移动终端的整个系统时使用的编程语言。例如,苹果智能移动终端运行iOS,其原生开发语言是Objective-C。Android智能移动终端运行Android,虽然其内核是Linux,为了保持效率系统层面使用C/C++开发,但是为支持跨平台特性其应用程序框架和原生应用程序使用Java开发,一般认为Java是其原生开发语言。Android移动终端上的预装的通用应用程序是其原生应用程序,能够使用智能移动终端硬件功能(例如扬声器、加速度传感器、摄像头等),包括:一个电子邮件客户端、一个SMS管理应用程序、一个完整的个人信息管理(personal information management,PIM)套件,包括日历和联系人列表、一个基于WebKit的Web浏览器、一个音乐播放器和图片查看器、一个照相机和视频录制应用程序、一个计算器、一个主屏幕、一个闹钟;不同硬件制造商和(或)终端运营商或发行商的移动终端的原生应用程序用户界面的样式和观感可能有所变化,但是应用程序在所有彼此兼容的Android设备中的功能是一样的。本申请实施例的页面容器是运行于Android系统的Java实现的接口组件,使用原生系统内核,相当于直接在系统上操作,因此稳定性和运行效率都比较好。
所述页面生命周期,是指从页面获取、创建、初始化、加载、事件处理、渲染至页面卸载、页面释放(即Page Disopse)的整个页面存活的过程,该过程中,客户端和服务端进行交互,维护页面状态,处理页面事件,例如接收用户操作并根据操作事件进行相应的响应。
所述执行逻辑,是指页面获取、页面创建、页面初始化、页面预加载及加载、页面事件处理等这些页面生命周期中执行的页面控制方法和事件处理的相关编译代码,通过执行这些相应方法,从而实现预期的设计功能。
本申请提供的实施例中实现的页面容器,提供一个开发接口以实现在页面生命周期中插入执行逻辑;其中,所述开发接口,至少定义下述方法:获取页面布局、页面创建后、页面开始初始化。
需要说明的是,在页面生命周期中插入执行逻辑的方案还可以是提供多个开发接口,每个开发接口封装一种页面分类情况;或者,不定义开发接口,而是在页面描述文件中声明需要执行的方法(例如Java method),也能实现在页面生命周期中插入执行逻辑。具体的,页面布局文件和页面逻辑文件组合成一个页面描述文件;所述页面描述文件中包含了页面操作相关的事件处理或流程跳转逻辑的方法的声明;由页面容器从所述页面描述文件中获取所述方法,并根据页面操作执行相应方法,从而实现在页面生命周期中插入执行逻辑。例如,页面描述文件中,使用数组保存方法名称。上述方案均在本申请包含范围之内。
实际应用中,本实施例的客户端表现为APK安装包,安装在Android手机上,客户端引擎被打包到APK中称为移动应用产品的一部分,而所述页面容器是客户端引擎的一个主要构成部分也包含在APK中。通过所述页面容器在移动应用中实现了移动应用页面的动态加载并运行移动应用页面;服务端表现为版本服务器和资源服务器。所谓版本服务器,包含服务器、操作系统及运行于其中的应用程序,用于为所述页面容器提供资源的版本信息;所谓资源服务器,包含服务器、操作系统及运行于其中的应用程序,用于为页面容器提供资源下载功能,可以和版本服务器共用服务器、操作系统及应用程序。图6示出了本申请提供的实施例中的客户端的Android操作系统、页面容器以及移动应用页面的层次结构。
本步骤的目的是使用所述页面容器提供的开发接口从最新版本的页面资源中解析出页面布局和页面逻辑类。
所述页面资源,是采用设定组织形式进行组织的页面布局文件和页面逻辑文件,包含用于描述动态化移动应用页面的信息,以及在应用中展示的数据内容及资源信息。具体的,这些信息是在应用中用于动态生成移动应用页面的视图及执行逻辑的相关描述信息和展示给用户的图片、文本、音频、视频等信息。本实施例中是包括XML文件和DEX文件的动态脚本。
所述页面布局,是在移动应用中,用合适浏览的方式设置展示给用户的页面上的图形界面,例如,将文字和图片排放在页面的不同位置,对文字的字体、字号、颜色设置,对图片展示比例设置。提供这些页面布局的描述信息的文件就是所述页面布局文件,一般是XML格式的文件。
所述页面逻辑类,是指实现页面内及页面间的展示顺序、交互流程、跳转逻辑及页面加载逻辑的相关编译代码,提供这些逻辑类的文件即页面逻辑文件,本申请提供的实施例中的页面逻辑类是Java开发的编译的类,页面逻辑文件是DEX文件。
具体到本申请提供的实施例,从XML格式的页面布局文件中获取页面布局,从DEX文件中获取页面逻辑类。根据页面组织方式的不同特点,对应的页面资源采用不同的设定组织形式,至少包括下述任一种组织形式:
每个页面布局文件只包含一个页面布局;
每个页面布局文件包含多个页面布局;
每个页面逻辑文件只包含一个逻辑类;
每个页面逻辑文件包含多个逻辑类;
多个页面布局和多个逻辑类包含在一个文件中;该文件为一个页面描述文件。
例如,一个页面用多个布局,包含多个逻辑类,可以将这些布局和逻辑类放到同一个文件中,该文件为一个页面描述文件,当在一个页面描述文件中包含多个布局和多个逻辑类时,客户端向服务端请求页面时下载速率高。
本申请提供的实施例中实现了最新版本的页面资源加载,所述最新版本的页面资源,是通过下述方法获取的:
根据页面路由检查本地缓存空间中是否已预加载最新版本的页面资源;
若否,根据页面路由从服务端获取最新版本的页面资源;
其中,所述页面路由,至少包括通过下述任一种协议指定其页面资源:
URI;
URL;
URN;并且,在网络中使用SSL或TSL安全协议传输。
所述页面路由,是用户访问一个页面时的路径信息,通过一些协议指定页面资源路径。本实施例中提供的页面容器,还支持页面路由功能,例如URI,实现页面之间地址跳转,从而使得应用能够增减页面,改变功能。
所述URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。具体到Java,一个URI实例可以是绝对的路径,也可以是相对的路径,只要它符合URI的语法规则。
所述URL,是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何定位到这个资源,它必须提供足够的定位信息,是绝对的路径。
所述URN,是uniform resource name,统一资源命名,是通过名字来标识资源,比如mailto:java-net@java.sun.com。URL和URN是具体的资源标识的方式。
资源路径信息在网络中传输时出于安全的考虑,一般使用SSL(Secure SocketsLayer,安全套接层)或TLS(Transport Layer Security,安全传输层)协议传输。
如果本地缓存空间中缓存了页面资源,并且该页面资源是最新版本,则从本地缓存空间获取页面资源,再加载使用。所谓本地缓存空间,是智能移动终端的存储空间,例如Android手机的内部存储或者存储卡。具体到本申请提供的实施例,本地缓存空间中存储的页面资源是由所述页面容器执行资源预加载流程得到的。图2示出了本申请提供的实施例中的页面资源预加载流程,包括:
步骤S101-1,通过页面容器接收服务端下发的资源更新消息;所述资源更新消息,包含页面资源列表及相应的资源地址。
服务端通过消息推送Push通知给客户端下发资源更新消息。
步骤S101-2,根据接收到的资源更新消息,从服务端下载相应资源,并将这些资源保存到本地存储空间。
收到服务器的资源更新消息后,所述页面容器会启动一个线程和服务端通信,请求下载资源并保存到本地。
在执行资源预加载流程之前,还包括资源预加载触发流程,即在所述通过页面容器接收服务端下发的资源更新消息这个步骤之前,至少包括采用下述任一种方式触发服务端下发所述资源更新消息:
方式一,服务端主动向客户端推送资源更新消息;
方式二,根据定时触发策略,通过所述页面容器定时向服务端发送是否有资源更新的请求消息;若有,则触发服务端下发资源更新消息。
通过资源预加载及资源预加载触发流程,可以提前将资源缓存到本地的缓存空间,提高页面的打开速率。例如,应用运营时期望在3天后发起一个抽奖功能,那么通过资源预加载流程可以提前向用户推送抽奖的相关资源,这样用户未使用该功能时,已经预加载了相关内容。
所述定时触发策略,是指客户端每隔一定时间间隔触发一次资源更新;至少包括下述任一种触发策略:
每次启动时向服务端请求是否有资源更新;
运行中每隔一定时间后向服务端请求是否有资源更新;
运行中在用户进行一定次数的点击操作后向服务端请求是否有资源更新;
运行中在用户进行一定次数的页面跳转操作后向服务端请求是否有资源更新。其中,所述时间间隔,采用下述任一种方式设置:
由服务端下发该时间间隔;
由客户端在程序中设置该时间间隔。
具体到本实施例,采用了方式二,即向服务端询问资源更新的方式,如图3所示,并且运行中每隔30分钟向服务端请求是否有资源更新,该时间间隔是在客户端实现时设置好的。图3示出了本申请提供的实施例中的资源预加载触发流程,具体包括下述处理步骤:
步骤S101-3,根据定时触发策略,通过所述页面容器定时向服务端发送是否有资源更新的请求消息。
步骤S101-4,若有,则触发服务端下发资源更新消息。
如果本地缓存空间中没有缓存最新版本的页面资源,则要根据页面路由从服务端获取最新版本的页面资源。图4是本申请提供的实施例中的根据页面路由从服务端获取最新版本的页面资源处理流程图,包括下述处理步骤:
步骤S401,根据页面路由信息进入所述页面容器的一个页面,从页面路由信息中获取页面资源名称。
具体的,应用启动后,用户操作打开一个URI标识的页面或者应用打开某个默认的URI标识的页面,例如:[scheme:][//authority][path][?pageName=xxx]。页面容器解析从其中解析出页面资源名称,即取出pageName参数的值。
步骤S402,向服务端请求该页面资源名称所对应的页面资源的最新的版本号。
本实施例中客户端向版本服务器发送消息,请求服务器提供页面资源名称所对应的最新版本号。具体的,所述版本号是采用下述形式所表示的版本信息:
顺序版本号,例如“0,1,2,3”。
此外,所述版本号,还可以采用下述形式表示版本信息:页面资源文件的md5值。所谓md5值,即使用Message-Digest Algorithm 5哈希算法计算的信息摘要值,通过将数据运算为一个固定长度值来验证信息传输完整一致。
步骤S403,接收服务端返回的所述页面资源的最新的版本号。
版本服务器根据接收到的页面资源名称获取到对应的最新版本号,将版本号返回给客户端的页面容器。
步骤S404,根据所述页面资源名称及其最新的版本号,检查本地缓存是否存在对应的最新版本的页面资源;
所述页面容器根据所述页面资源名称及其最新的版本号检查本地缓存空间是否有已经预加载的资源,如果存在,则直接从本地缓存获取最新资源,不用去资源服务器下载,能提升页面打开速度。
步骤S405,若否,向服务端请求所述最新版本的页面资源,并接收服务端返回的所述最新版本的页面资源。
如果本地缓存空间没有缓存最新版本的页面资源,则页面容器会起一个线程和资源服务器通信,请求下发对应资源名称及最新版本号的页面资源。
所述页面资源,是使用数字签名加签的文件。具体到本申请提供的实施例,所述数字签名是APK签名;所述页面逻辑文件是DEX文件;所述页面布局文件是XML文件。具体的,本实施例的页面资源文件在服务端使用Android提供的APK签名工具对需要签名的页面资源文件进行加签,经过加签的文件在客户端下载使用前要校验数字签名的一致性,从而保证数据的完整性和真实性。所谓数字签名就是信息的发送者用自己的私钥对消息摘要加密产生一个字符串,加密算法确保别人无法伪造生成这段字符串,这段数字串也是对信息的发送者发送信息真实性的一个有效证明。
本实施例中,页面容器在通过上述的资源预加载流程及最新资源获取流程中获取到最新版本的页面资源后,再从所述最新版本的页面资源中获取页面布局和页面逻辑类。其处理过程还包括校验所述页面资源的签名一致性;所述校验所述页面资源的签名一致性,至少包括下述任一处理步骤:
校验所述页面布局文件的签名一致性;
校验所述页面逻辑文件的签名一致性。
具体的,发送者将信息摘要用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的信息摘要,然后接收者用相同的Hash函数对收到的原文产生一个信息摘要,与解密的信息摘要做比对。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改。并且由于只有发送者才有加密摘要的私钥,所以我们可以确定信息一定是发送者发送的。
本实施例中,通过步骤S101,从经过APK签名加签的最新版本的页面资源中获取到相应的页面布局和页面逻辑类,页面容器得到这些信息后,运行过程中自动加载这些最新版本的资源,不需要重新安装客户端APK,就能得到移动应用提供的最新业务与功能。
步骤S102,渲染所述页面布局和加载所述页面逻辑类。
本步骤的目的是通过页面容器渲染步骤S101中获取到的页面布局,加载步骤S101中获取到的页面逻辑类。
本申请提供的实施例中实现的页面容器,提供一个开发接口PageScript以实现在页面生命周期中插入执行逻辑。具体的,PageScript定义了getPageView、onPageCreate、onPageInit等方法,需要开发者根据设计的页面加载逻辑及流程实现这些方法,从而控制执行时机和执行逻辑,获得预期功能,达到动态加载移动应用页面,实时调整移动应用的数据处理和控制页面逻辑的目的。此外,还可以是提供多个开发接口,每个开发接口封装一种页面分类情况;或者,不定义开发接口,而是在页面描述文件中声明需要执行的方法(例如Java method),也能实现在页面生命周期中插入执行逻辑,均在本申请包含范围之内。
本实施例中,所述渲染所述页面布局和加载所述页面逻辑类的处理流程如图5所示,包括下述处理步骤:
步骤S501,从所述页面布局文件获取页面布局,调用系统的布局生成器渲染布局,获得页面视图并添加到系统窗口。
所述渲染页面布局,是根据页面布局文件创建视图,向屏幕画出各个像素点。本申请提供的实施例中,是在获取XML页面布局文件后,调用Android系统原生的LayoutInflater把XML格式的布局信息渲染为Android的原生视图,即native VIEW,获取到移动应用页面需要的Android视图后,将其添加到系统窗口。所谓LayoutInflater,是Android系统的布局构建器,用于把布局文件或者字符构建为系统可用的视图(view)。
本步骤中调用系统原生的布局构建器渲染布局,运行效率高。
步骤S502,从所述页面逻辑文件获取逻辑类,并装载该逻辑类。
所述加载页面逻辑,是从页面逻辑文件中装载页面逻辑类。具体的到本实施例,是由页面容器调用DexClassLoader加载DEX文件,装载描述页面逻辑的Java class。所谓DexClassLoader,是JVM(Java虚拟机)的类装载器,在Android中每个应用都有独立的JVM和DexClassLoader。Android虚拟机加载DEX文件,其中用来描述页面逻辑的Java类的字节码,而React Native需要加载页面描述脚本,因此加载DEX的速度更快,并且页面逻辑由于使用Java类描述因此能实现与Android原生应用一样的功能。
本步骤中调用系统原生的类装载器装载逻辑类,运行效率高。
步骤S503,实例化所述逻辑类,获得逻辑对象;其中,所述逻辑类,提供支持在页面生命周期中插入自定义逻辑的方法。
页面容器在实例化逻辑对象获得逻辑功能的对象后,就可以通过执行所述逻辑功能对象里的方法,至此,实现了页面的动态加载。而图片、视频等其他资源可以等页面展现后,逐渐加载,这个可以根据业务需求来决定是否需要加速打开页面。
具体的,页面容器在装载class后,实例化逻辑对象获得逻辑功能的对象,随后,页面容器执行所述逻辑功能对象里指定的初始化方法初始化逻辑对象,这样,当用户再次操作,操作命中逻辑对象提供的某些方法时,页面容器会执行相应的方法,从而产生预期的交互结果。例如,页面创建后,根据布局判断是VIP用户,则调用onPageCreate方法添加VIP头像。另外,通过本申请提供的页面动态加载方法,由于允许开发者自定义逻辑来实现页面交互流程及处理逻辑,通过实现Java方法可以完成多页面的动态加载,例如页面创建时要加载登录页面,虽然单页面也能通过先隐藏部分内容后续通过将隐藏内容可见化来实现,但是这样单页面设计会比较复杂,而通过本申请提供的页面动态加载方法,在实现onPageCreate方法中处理登录页面的加载就能完成该功能。
另外,所述渲染所述页面布局和加载所述页面逻辑类,还可以采用下述执行顺序:先加载所述页面逻辑类,再渲染所述页面布局。
本实施例中通过步骤S101和步骤S102实现了移动应用页面动态加载方法,在整个处理流程中的交互时序图如图7所示,说明如下:
1、在Android应用启动以后,页面容器就开始接受服务器的消息通知。消息通知包含下载列表及具体的资源地址。
2、收到服务器的(消息推送Push)消息通知后,页面容器会启动一个线程去下载资源并保存到本地。
3、在Android应用启动后,页面容器也会根据配置的策略,定时触发资源更新,向版本服务器请求是否有资源更新。
4、若有资源更新,页面容器启动一个线程去下载资源并保存到本地。
5、应用启动后,用户可以通过URI地址进入页面容器的某个页面(或者应用默认打开某个URI标识的页面)。
6、页面容器解析URI获得页面的参数pageName。
7、页面容器请求版本服务器当前页面的最新版本。
8、版本服务器返回资源版本标识v。
9、页面容器检查本地缓存是否存在pageName和v对应的资源,如果存在,跳转到第12步。
10、如果pageName和v对应的资源不存在,向资源服务器请求pageName和v对应的页面资源。页面资源包括页面布局、dex文件。
11、资源服务器返回页面资源。
12、页面容器解析页面布局xml文件和逻辑class。
13、页面容器调用系统的LayoutInflater渲染布局xml。
14、获得页面需要的Android视图View,并添加到系统窗口。
15、页面容器调用DexClassLoader加载dex文件(即页面逻辑),装载class。
16、页面容器随后会实例化逻辑的对象,获得逻辑功能的Object;随后,容器会执行逻辑功能对象里面指定的初始化方法。
17、当用户再次操作,命中逻辑对象的某些方法,容器会执行对象方法并把结果返回给用户,或者产生期望的交互结果。
在其它的实施例中,上述的流程页面名称pageName和版本v可以组合为一个唯一id,相应的,上述流程中对应于pageName和v步骤中,转换为对前述唯一id的处理,例如,请求是否有最新资源,上传pageName和v,变成上传id;查找是否有缓存,查找pageName和v,变成查找id。在此不再展开进行论述,本领域技术人员可以根据上述的流程以及本段落的说明作出相应的改变。
上述的实施例中,提供了一种用于页面动态加载的方法,以此为基础,本申请还提供一种用于页面加载的方法。参照图8,其示出了本申请提供的一种用于页面加载的方法的实施例的处理流程图。
由于该实施例以上述的用于页面动态加载的方法的实施例为基础,相关的部分请参见上述提供的实施例对应说明即可。下述描述的用于页面加载的方法的实施例仅仅是简要描述的。
本申请提供的一种用于页面加载的方法,包括:
步骤S801,通过页面容器,从页面资源中获取页面布局和页面逻辑类;所述页面资源,是采用设定组织形式进行组织的页面布局文件和页面逻辑文件;所述页面容器,是用于实现在页面生命周期中插入执行逻辑的功能模块。
步骤S802,渲染所述页面布局和加载所述页面逻辑类。
基于本申请提供的用于页面动态加载的方法的实施例,本申请还提供一种页面资源预加载的方法。参照图9,其示出了本申请提供的一种页面资源预加载的方法的实施例的处理流程图。
由于该实施例以本申请提供的用于页面动态加载的方法的实施例为基础,相关的部分请参见该实施例对应说明即可。下述描述的页面资源预加载的方法的实施例仅仅是简要描述的。
本申请提供的一种页面资源预加载的方法,包括:
步骤S901,通过页面容器接收服务端下发的资源更新消息;所述资源更新消息,包含页面资源列表及相应的资源地址。
步骤S902,根据接收到的资源更新消息,从服务端下载相应的页面资源,并将这些资源保存到本地存储空间。
可选的,所述通过页面容器接收服务端下发的资源更新消息,在此步骤之前,至少包括采用下述任一种方式触发服务端下发所述资源更新消息:
服务端主动向客户端推送资源更新消息;
根据定时触发策略,通过所述页面容器定时向服务端发送是否有资源更新的请求消息;
若有,则触发服务端下发资源更新消息。
可选的,所述定时触发策略,是指客户端每隔一定时间间隔触发一次资源更新;至少包括下述任一种触发策略:
每次启动时向服务端请求是否有资源更新;
运行中每隔一定时间后向服务端请求是否有资源更新;
运行中在用户进行一定次数的点击操作后向服务端请求是否有资源更新;
运行中在用户进行一定次数的页面跳转操作后向服务端请求是否有资源更新。
可选的,所述;所述时间间隔,采用下述任一种方式设置:
由服务端下发该时间间隔;
由客户端在程序中设置该时间间隔。
基于本申请提供的用于页面动态加载的方法的实施例,本申请还提供一种最新版本页面资源获取的方法。参照图10,其示出了本申请提供的一种最新版本页面资源获取的方法的实施例的处理流程图。
由于该实施例以本申请提供的用于页面动态加载的方法的实施例为基础,相关的部分请参见该实施例对应说明即可。下述描述的最新版本页面资源获取的方法的实施例仅仅是简要描述的。
本申请提供的一种最新版本页面资源获取的方法,包括:
步骤S1001,根据页面路由信息进入所述页面容器的一个页面,从页面路由信息中获取页面资源名称。
步骤S1002,向服务端请求该页面资源名称所对应的页面资源的最新的版本号。
步骤S1003,接收服务端返回的所述页面资源的最新的版本号。
步骤S1004,根据所述页面资源名称及其最新的版本号,检查本地缓存是否存在对应的最新版本的页面资源。
步骤S1005,若否,向服务端请求所述最新版本的页面资源,并接收服务端返回的所述最新版本的页面资源;其中,所述页面资源,是采用设定组织形式组织的页面布局文件和页面逻辑文件。
可选的,所述版本号,是采用下述任一种形式所表示的版本信息:
顺序版本号;
页面资源文件的md5值。
可选的,所述页面资源,是使用数字签名加签的文件。
可选的,所述设定组织形式,至少包括下述任一种组织形式:
每个页面布局文件只包含一个页面布局;
每个页面布局文件包含多个页面布局;
每个页面逻辑文件只包含一个逻辑类;
每个页面逻辑文件包含多个逻辑类;
多个页面布局和多个逻辑类包含在一个文件中。
基于本申请提供的用于页面动态加载的方法的实施例,本申请还提供一种页面动态加载系统。参照图11,其示出了本申请提供的一种页面动态加载系统的实施例的示意图。
由于该实施例以本申请提供的用于页面动态加载的方法的实施例为基础,相关的部分请参见该实施例对应说明即可。下述描述的页面动态加载系统的实施例仅仅是简要描述的。
本申请提供的一种页面动态加载系统,包括:
页面资源预加载模块、最新版本页面资源获取模块和页面资源加载模块,其中,
所述页面资源预加载模块1101,用于接收服务端下发的资源更新消息,根据接收到的资源更新消息,从服务端下载相应页面资源,并将这些页面资源保存到本地存储空间;所述资源更新消息,包含页面资源列表及相应的资源地址;
所述最新版本页面资源获取模块1102,用于在运行中根据页面路由获取最新版本的页面资源;
所述页面资源加载模块1103,用于在运行中加载所述最新版本的页面资源。
可选的,所述页面资源预加载模块,包括页面资源更新触发子模块1104,用于根据定时触发策略,向服务端发送是否有页面资源更新的请求消息;若有,则触发服务端下发资源更新消息。
可选的,所述页面资源预加载模块,还包括页面资源更新子模块1105,用于接收所述服务端下发的资源更新消息。
可选的,所述页面资源预加载模块,还包括页面资源缓存子模块1106,用于根据所述资源更新消息从服务端下载相应页面资源,将这些页面资源保存到本地缓存空间;所述资源更新消息,包含页面资源列表及相应的资源地址。
可选的,所述最新版页面资源获取模块,包括页面资源请求子模块1107,用于从页面路由信息中获取页面资源名称,向服务端请求该页面资源名称所对应的页面资源的最新的版本号,并接收服务端返回的所述页面资源的最新的版本号;根据所述页面资源名称及其最新的版本号,检查本地缓存空间是否存在对应的页面资源,若否,则向服务端请求所述页面资源名称及其最新的版本号所对应的页面资源,并接收服务端返回的最新版本的页面资源。
可选的,所述页面资源加载模块,包括页面资源校验子模块1108,用于校验所述页面资源的相关文件的数字签名一致性;其中,所述的页面资源的相关文件,是使用数字签名进行加签的文件,至少包括页面布局文件和页面逻辑文件。
与本申请提供的用于页面动态加载的方法的实施例相对应,本申请还提供一种用于页面动态加载的装置。参照图12,其示出了本申请提供的一种页面动态加载的装置的实施例的示意图。
由于本申请提供的一种用于页面动态加载的装置与本申请提供的用于页面动态加载的方法的实施例基本相似,相关的部分请参见该实施例对应说明即可。下述描述的用于页面动态加载的装置的实施例仅仅是示意的。
本申请提供的一种用于页面动态加载的装置,包括:
页面资源解析单元1201,用于通过页面容器,从最新版本的页面资源中获取页面布局和页面逻辑类;所述页面资源,是采用设定组织形式进行组织的页面布局文件和页面逻辑文件;所述页面容器,是用于实现在页面生命周期中插入执行逻辑的功能模块;
页面资源加载单元1202,用于渲染所述页面布局和加载所述页面逻辑类。
本申请还提供了一种用于实现所述用于页面动态加载的方法的电子设备,参照图13,其示出了本实施例提供的一种电子设备的示意图。
本申请提供的所述电子设备实施例描述得比较简单,相关的部分请参见上述提供的所述用于页面动态加载的方法的实施例的对应说明即可。下述描述的实施例仅仅是示意性的。
本申请提供一种电子设备,包括:
存储器1301,以及处理器1302;
所述存储器1301用于存储计算机可执行指令,所述处理器1302用于执行所述计算机可执行指令:
通过页面容器,从最新版本的页面资源中获取页面布局和页面逻辑类;所述页面资源,是采用设定组织形式进行组织的页面布局文件和页面逻辑文件;所述页面容器,是用于实现在页面生命周期中插入执行逻辑的功能模块;
渲染所述页面布局和加载所述页面逻辑类。
本申请还提供了一种用于实现所述用于页面动态加载的方法的存储设备,本申请提供的所述存储设备实施例描述得比较简单,相关的部分请参见上述提供的所述用于页面动态加载的方法的实施例的对应说明即可。下述描述的实施例仅仅是示意性的。
本申请提供一种存储设备,包括:存储有指令,所述指令能够被处理器加载并执行以下步骤:
通过页面容器,从最新版本的页面资源中获取页面布局和页面逻辑类;所述页面资源,是采用设定组织形式进行组织的页面布局文件和页面逻辑文件;所述页面容器,是用于实现在页面生命周期中插入执行逻辑的功能模块;
渲染所述页面布局和加载所述页面逻辑类。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
Claims (10)
1.一种用于页面动态加载的方法,其特征在于,包括:
通过页面容器,从最新版本的页面资源中获取页面布局和页面逻辑类;
渲染所述页面布局和加载所述页面逻辑类;
其中,所述页面资源,是采用设定组织形式进行组织的页面布局文件和页面逻辑文件;所述页面容器,是用于实现在页面生命周期中插入执行逻辑的功能模块。
2.根据权利要求1所述的用于页面动态加载的方法,其特征在于,所述页面容器,提供至少一个开发接口以实现在页面生命周期中插入执行逻辑;其中,所述开发接口,至少定义下述方法:获取页面布局、页面创建后、页面开始初始化。
3.根据权利要求1所述的用于页面动态加载的方法,其特征在于,所述最新版本的页面资源,是通过下述方法获取的:
根据页面路由检查本地缓存空间中是否已预加载最新版本的页面资源;
若否,根据页面路由从服务端获取最新版本的页面资源;
其中,所述页面路由,至少包括通过下述任一种协议指定其页面资源:
URI;
URL;
URN;并且,在网络中使用SSL或TSL安全协议传输。
4.根据权利要求3所述的用于页面动态加载的方法,其特征在于,所述根据页面路由检查本地缓存空间中是否已预加载最新版本的页面资源,其中,所述预加载最新版本的页面资源,包括下述处理步骤:
通过页面容器接收服务端下发的资源更新消息;所述资源更新消息,包含页面资源列表及相应的资源地址;
根据接收到的资源更新消息,从服务端下载相应资源,并将这些资源保存到本地存储空间。
5.根据权利要求3所述的用于页面动态加载的方法,其特征在于,所述根据页面路由从服务端获取最新版本的页面资源,包括下述处理步骤:
根据页面路由信息进入所述页面容器的一个页面,从页面路由信息中获取页面资源名称;
向服务端请求该页面资源名称所对应的页面资源的最新的版本号;
接收服务端返回的所述页面资源的最新的版本号;
根据所述页面资源名称及其最新的版本号,检查本地缓存是否存在对应的最新版本的页面资源;
若否,向服务端请求所述最新版本的页面资源,并接收服务端返回的所述最新版本的页面资源。
6.根据权利要求1所述的用于页面动态加载的方法,其特征在于,所述页面容器,还用于提供页面路由功能,支持页面之间的地址跳转;所述页面路由是URI。
7.根据权利要求1所述的用于页面动态加载的方法,其特征在于,所述实现在页面生命周期中插入执行逻辑,包括如下步骤:
将页面布局文件和页面逻辑文件组合成一个页面描述文件;所述页面描述文件中包含了页面操作相关的事件处理或流程跳转逻辑的方法的声明;
由页面容器从所述页面描述文件中获取所述方法,并根据页面操作执行相应方法。
8.一种用于页面资源预加载的方法,其特征在于,包括:
通过页面容器接收服务端下发的资源更新消息;所述资源更新消息,包含页面资源列表及相应的资源地址;
根据接收到的资源更新消息,从服务端下载相应的页面资源,并将这些资源保存到本地存储空间。
9.一种用于获取最新版本的页面资源的方法,其特征在于,包括:
根据页面路由信息进入所述页面容器的一个页面,从页面路由信息中获取页面资源名称;
向服务端请求该页面资源名称所对应的页面资源的最新的版本号;
接收服务端返回的所述页面资源的最新的版本号;
根据所述页面资源名称及其最新的版本号,检查本地缓存是否存在对应的最新版本的页面资源;
若否,向服务端请求所述最新版本的页面资源,并接收服务端返回的所述最新版本的页面资源;其中,所述页面资源,是采用设定组织形式组织的页面布局文件和页面逻辑文件。
10.一种页面动态加载系统,其特征在于,包括:
页面资源预加载模块、最新版本页面资源获取模块和页面资源加载模块,其中,
页面资源预加载模块,用于接收服务端下发的资源更新消息,根据接收到的资源更新消息,从服务端下载相应页面资源,并将这些页面资源保存到本地存储空间;所述资源更新消息,包含页面资源列表及相应的资源地址;
最新版本页面资源获取模块,用于在运行中根据页面路由获取最新版本的页面资源;
页面资源加载模块,用于在运行中加载所述最新版本的页面资源。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710713449 | 2017-08-18 | ||
CN2017107134496 | 2017-08-18 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108021614A true CN108021614A (zh) | 2018-05-11 |
Family
ID=62080471
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711069904.XA Pending CN108021614A (zh) | 2017-08-18 | 2017-11-03 | 一种用于页面动态加载的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108021614A (zh) |
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108804101A (zh) * | 2018-05-23 | 2018-11-13 | 北京五八信息技术有限公司 | 创建界面元素的方法、装置、存储介质及移动终端 |
CN108845803A (zh) * | 2018-05-23 | 2018-11-20 | 北京五八信息技术有限公司 | 一种列表视图的更新方法、装置、设备及存储介质 |
CN108845800A (zh) * | 2018-05-23 | 2018-11-20 | 北京五八信息技术有限公司 | 一种组件扩展功能的实现方法、装置、设备及存储介质 |
CN109240673A (zh) * | 2018-08-03 | 2019-01-18 | 福建天泉教育科技有限公司 | 一种基于react-native的视图动态加载更新方法及系统 |
CN109408142A (zh) * | 2018-10-12 | 2019-03-01 | 南瑞集团有限公司 | 基于jsbundle实现H5页面高性能安全加载的方法 |
CN109525584A (zh) * | 2018-11-26 | 2019-03-26 | 竞技世界(北京)网络技术有限公司 | 一种构建移动端跨平台多类型应用容器的方法 |
CN109542530A (zh) * | 2018-10-26 | 2019-03-29 | 深圳点猫科技有限公司 | 一种基于小程序架构的分级加载方法及装置 |
CN109597950A (zh) * | 2018-10-25 | 2019-04-09 | 北京辰森世纪科技股份有限公司 | 应用程序的网页处理、网页数据提供方法及装置 |
CN109684283A (zh) * | 2018-12-24 | 2019-04-26 | 国电南瑞科技股份有限公司 | 一种移动应用cim/g文件本地缓存方法、系统及设备 |
CN109933349A (zh) * | 2019-01-28 | 2019-06-25 | 优信拍(北京)信息科技有限公司 | 一种基于vue spa及时更新的方法、系统及设备 |
CN110069309A (zh) * | 2019-04-23 | 2019-07-30 | 广州华多网络科技有限公司 | 一种页面配置方法、系统及客户端 |
CN110069737A (zh) * | 2019-04-19 | 2019-07-30 | 北京三快在线科技有限公司 | 内容生成方法、装置、计算机设备及存储介质 |
CN110162720A (zh) * | 2019-04-16 | 2019-08-23 | 平安科技(深圳)有限公司 | 网页页面加载方法、装置、计算机设备及存储介质 |
CN110221830A (zh) * | 2019-06-12 | 2019-09-10 | 苏州亿歌网络科技有限公司 | 一种在PC上加载WebView的方法及系统 |
CN110275727A (zh) * | 2019-06-27 | 2019-09-24 | 江苏满运软件科技有限公司 | 移动端应用程序动态更新方法、系统、设备及存储介质 |
CN110442808A (zh) * | 2019-06-28 | 2019-11-12 | 苏宁云计算有限公司 | 页面渲染加速方法和装置 |
CN110889058A (zh) * | 2018-09-06 | 2020-03-17 | 福建天泉教育科技有限公司 | 一种React-Native原生能力的加载方法及终端 |
CN110928543A (zh) * | 2019-11-04 | 2020-03-27 | 北京小米移动软件有限公司 | 页面处理方法、装置及存储介质 |
CN112163231A (zh) * | 2020-09-17 | 2021-01-01 | 北京一人一亩田网络科技有限公司 | iOS应用自动化打包预缓存数据的方法、装置、电子设备及计算机可读介质 |
CN112527444A (zh) * | 2020-12-29 | 2021-03-19 | 天翼阅读文化传播有限公司 | 应用于虚拟现实客户端用户界面的自定义页面实现方法 |
CN112861048A (zh) * | 2021-03-10 | 2021-05-28 | 北京车和家信息技术有限公司 | 页面加载方法、装置、设备及计算机可读存储介质 |
CN112988284A (zh) * | 2021-05-13 | 2021-06-18 | 太平金融科技服务(上海)有限公司 | 应用程序启动方法、装置、计算机设备和存储介质 |
CN113127775A (zh) * | 2019-12-30 | 2021-07-16 | 武汉斗鱼鱼乐网络科技有限公司 | 一种页面加载方法、装置、设备和存储介质 |
WO2021164368A1 (zh) * | 2020-02-17 | 2021-08-26 | 支付宝(杭州)信息技术有限公司 | 一种容器应用启动方法、系统、装置及电子设备 |
CN113672835A (zh) * | 2021-07-13 | 2021-11-19 | 上海硬通网络科技有限公司 | 网页动态特效的设置方法、装置、设备及存储介质 |
CN114528529A (zh) * | 2022-02-15 | 2022-05-24 | 广州经传多赢投资咨询有限公司 | 一种内存xml文件加密方法 |
WO2023093476A1 (zh) * | 2021-11-29 | 2023-06-01 | 北京字节跳动网络技术有限公司 | 页面处理方法及设备 |
CN117370702A (zh) * | 2023-12-08 | 2024-01-09 | 浪潮通用软件有限公司 | 一种用于优化审批页面加载速度的方法及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101291335A (zh) * | 2008-06-13 | 2008-10-22 | 中兴通讯股份有限公司 | 一种基于浏览器获取服务器动态数据的方法及装置 |
CN105159999A (zh) * | 2015-09-08 | 2015-12-16 | 百度在线网络技术(北京)有限公司 | 动态页面的展现方法及装置 |
CN106682176A (zh) * | 2016-12-29 | 2017-05-17 | 北京五八信息技术有限公司 | 页面的加载方法、装置和设备 |
CN106888233A (zh) * | 2015-12-15 | 2017-06-23 | 北京新媒传信科技有限公司 | 数据更新系统及方法 |
-
2017
- 2017-11-03 CN CN201711069904.XA patent/CN108021614A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101291335A (zh) * | 2008-06-13 | 2008-10-22 | 中兴通讯股份有限公司 | 一种基于浏览器获取服务器动态数据的方法及装置 |
CN105159999A (zh) * | 2015-09-08 | 2015-12-16 | 百度在线网络技术(北京)有限公司 | 动态页面的展现方法及装置 |
CN106888233A (zh) * | 2015-12-15 | 2017-06-23 | 北京新媒传信科技有限公司 | 数据更新系统及方法 |
CN106682176A (zh) * | 2016-12-29 | 2017-05-17 | 北京五八信息技术有限公司 | 页面的加载方法、装置和设备 |
Non-Patent Citations (2)
Title |
---|
智能手机编程课题组: "《智能手机编程》", 31 August 2013 * |
欢醉: ""在Android中实现service动态更新UI界面"", 《HTTPS://WWW.CNBLOGS.COM/ZHANGS1986/P/3248258.HTML》 * |
Cited By (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108804101B (zh) * | 2018-05-23 | 2022-11-04 | 北京五八信息技术有限公司 | 创建界面元素的方法、装置、存储介质及移动终端 |
CN108845803A (zh) * | 2018-05-23 | 2018-11-20 | 北京五八信息技术有限公司 | 一种列表视图的更新方法、装置、设备及存储介质 |
CN108845800A (zh) * | 2018-05-23 | 2018-11-20 | 北京五八信息技术有限公司 | 一种组件扩展功能的实现方法、装置、设备及存储介质 |
CN108804101A (zh) * | 2018-05-23 | 2018-11-13 | 北京五八信息技术有限公司 | 创建界面元素的方法、装置、存储介质及移动终端 |
CN108845803B (zh) * | 2018-05-23 | 2022-11-08 | 北京五八信息技术有限公司 | 一种列表视图的更新方法、装置、设备及存储介质 |
CN109240673A (zh) * | 2018-08-03 | 2019-01-18 | 福建天泉教育科技有限公司 | 一种基于react-native的视图动态加载更新方法及系统 |
CN109240673B (zh) * | 2018-08-03 | 2021-11-05 | 福建天泉教育科技有限公司 | 一种基于react-native的视图动态加载更新方法及系统 |
CN110889058A (zh) * | 2018-09-06 | 2020-03-17 | 福建天泉教育科技有限公司 | 一种React-Native原生能力的加载方法及终端 |
CN109408142A (zh) * | 2018-10-12 | 2019-03-01 | 南瑞集团有限公司 | 基于jsbundle实现H5页面高性能安全加载的方法 |
CN109597950A (zh) * | 2018-10-25 | 2019-04-09 | 北京辰森世纪科技股份有限公司 | 应用程序的网页处理、网页数据提供方法及装置 |
CN109542530A (zh) * | 2018-10-26 | 2019-03-29 | 深圳点猫科技有限公司 | 一种基于小程序架构的分级加载方法及装置 |
CN109525584A (zh) * | 2018-11-26 | 2019-03-26 | 竞技世界(北京)网络技术有限公司 | 一种构建移动端跨平台多类型应用容器的方法 |
CN109684283A (zh) * | 2018-12-24 | 2019-04-26 | 国电南瑞科技股份有限公司 | 一种移动应用cim/g文件本地缓存方法、系统及设备 |
CN109933349A (zh) * | 2019-01-28 | 2019-06-25 | 优信拍(北京)信息科技有限公司 | 一种基于vue spa及时更新的方法、系统及设备 |
CN110162720A (zh) * | 2019-04-16 | 2019-08-23 | 平安科技(深圳)有限公司 | 网页页面加载方法、装置、计算机设备及存储介质 |
CN110162720B (zh) * | 2019-04-16 | 2023-07-18 | 平安科技(深圳)有限公司 | 网页页面加载方法、装置、计算机设备及存储介质 |
CN110069737B (zh) * | 2019-04-19 | 2020-08-14 | 北京三快在线科技有限公司 | 内容生成方法、装置、计算机设备及存储介质 |
CN110069737A (zh) * | 2019-04-19 | 2019-07-30 | 北京三快在线科技有限公司 | 内容生成方法、装置、计算机设备及存储介质 |
CN110069309A (zh) * | 2019-04-23 | 2019-07-30 | 广州华多网络科技有限公司 | 一种页面配置方法、系统及客户端 |
CN110221830A (zh) * | 2019-06-12 | 2019-09-10 | 苏州亿歌网络科技有限公司 | 一种在PC上加载WebView的方法及系统 |
CN110275727A (zh) * | 2019-06-27 | 2019-09-24 | 江苏满运软件科技有限公司 | 移动端应用程序动态更新方法、系统、设备及存储介质 |
CN110442808A (zh) * | 2019-06-28 | 2019-11-12 | 苏宁云计算有限公司 | 页面渲染加速方法和装置 |
CN110928543A (zh) * | 2019-11-04 | 2020-03-27 | 北京小米移动软件有限公司 | 页面处理方法、装置及存储介质 |
CN113127775B (zh) * | 2019-12-30 | 2023-10-20 | 北京鲲鹏映像文化传媒有限公司 | 一种页面加载方法、装置、设备和存储介质 |
CN113127775A (zh) * | 2019-12-30 | 2021-07-16 | 武汉斗鱼鱼乐网络科技有限公司 | 一种页面加载方法、装置、设备和存储介质 |
WO2021164368A1 (zh) * | 2020-02-17 | 2021-08-26 | 支付宝(杭州)信息技术有限公司 | 一种容器应用启动方法、系统、装置及电子设备 |
CN112163231A (zh) * | 2020-09-17 | 2021-01-01 | 北京一人一亩田网络科技有限公司 | iOS应用自动化打包预缓存数据的方法、装置、电子设备及计算机可读介质 |
CN112527444A (zh) * | 2020-12-29 | 2021-03-19 | 天翼阅读文化传播有限公司 | 应用于虚拟现实客户端用户界面的自定义页面实现方法 |
CN112861048A (zh) * | 2021-03-10 | 2021-05-28 | 北京车和家信息技术有限公司 | 页面加载方法、装置、设备及计算机可读存储介质 |
CN112988284A (zh) * | 2021-05-13 | 2021-06-18 | 太平金融科技服务(上海)有限公司 | 应用程序启动方法、装置、计算机设备和存储介质 |
CN113672835A (zh) * | 2021-07-13 | 2021-11-19 | 上海硬通网络科技有限公司 | 网页动态特效的设置方法、装置、设备及存储介质 |
CN113672835B (zh) * | 2021-07-13 | 2024-04-12 | 上海硬通网络科技有限公司 | 网页动态特效的设置方法、装置、设备及存储介质 |
WO2023093476A1 (zh) * | 2021-11-29 | 2023-06-01 | 北京字节跳动网络技术有限公司 | 页面处理方法及设备 |
CN114528529A (zh) * | 2022-02-15 | 2022-05-24 | 广州经传多赢投资咨询有限公司 | 一种内存xml文件加密方法 |
CN117370702A (zh) * | 2023-12-08 | 2024-01-09 | 浪潮通用软件有限公司 | 一种用于优化审批页面加载速度的方法及设备 |
CN117370702B (zh) * | 2023-12-08 | 2024-03-05 | 浪潮通用软件有限公司 | 一种用于优化审批页面加载速度的方法及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108021614A (zh) | 一种用于页面动态加载的方法及系统 | |
US11829186B2 (en) | System and methods for integration of an application runtime environment into a user computing environment | |
US10831987B2 (en) | Computer program product provisioned to non-transitory computer storage of a wireless mobile device | |
US20170052878A1 (en) | Methods and System to Create Applications and Distribute Applications to a Remote Device | |
US10235472B2 (en) | Guest browser | |
CN103150513B (zh) | 拦截应用程序中的植入信息的方法及装置 | |
US20020065849A1 (en) | Method and system for integrating network-based functionality into productivity applications employing word processing documents | |
US8407598B2 (en) | Dynamic web control generation facilitator | |
KR20070018042A (ko) | 사용자 인터페이스 컨텐츠 데이터용 데이터 컨테이너 | |
CN105608145A (zh) | 基于下载渠道统计应用软件的下载量的方法及装置 | |
CN104216700A (zh) | 基于云计算的html5应用的打包、安装、卸载、运行方法及系统 | |
CN102362261A (zh) | 通过网络浏览器输入内容至应用程序 | |
CN106569856A (zh) | 一种应用视图资源文件的加载方法和装置 | |
US20110320286A1 (en) | System And Method For Integrating An Ad Banner With A Calling Application | |
US9606844B2 (en) | Remotely-hosted interactive client-server session | |
CN109298852A (zh) | 简化虚拟现实应用程序开发的方法及可读存储介质 | |
CN112783580A (zh) | 基于子应用的路由控制方法、装置和计算机设备 | |
JP2018533796A (ja) | セキュアエレメント内のパッケージを管理する方法 | |
CN111666596B (zh) | 一种数据处理方法、设备及介质 | |
CN109933355A (zh) | 应用程序升级方法及装置 | |
CN110574033A (zh) | 减少多媒体内容传递的远程过程调用 | |
JP2017151873A (ja) | 画像配信プログラム、画像配信システム | |
Aurdal | VisualBox. A Generic Data Integration and Visualization Tool | |
CN114785533A (zh) | 通讯录数据的安全控制方法、装置、电子设备和存储介质 | |
Haskell | SHARPENED & ENLARGED |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180511 |
|
RJ01 | Rejection of invention patent application after publication |