界面加载方法、装置、计算机设备和存储介质
文献发布时间:2023-06-19 10:05:17
技术领域
本申请涉及计算机技术领域,特别是涉及一种界面加载方法、装置、计算机设备和存储介质。
背景技术
随着科学技术的飞速发展,线上办公越来越普及,很多企业采用企业管理系统的客户端处理企业的各种业务。企业管理系统的客户端中往往涉及非常多的界面,界面内容也比较复杂,有时候加载起来会比较慢,因此,提高界面的加载效率非常重要。
传统方法中,在加载界面时,一般需要先初始化渲染界面控件,然后再填充界面数据。然而,这样加载效率比较慢,尤其是对于企业管理系统而言,界面往往比较复杂,且有时需要在几个界面之间切换,这样比较慢的加载速度无法满足企业管理系统的实际需求。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高界面加载效率的界面加载方法、装置、计算机设备和存储介质。
一种界面加载方法,所述方法包括:
在客户端加载完成第一界面后,确定所述第一界面所关联的界面;所述第一界面为所述客户端中除第一层级的界面之外的任意一个层级的界面;所述关联的界面包括至少一个界面;
预加载所述第一界面所关联的各个界面的界面实例;
当接收到基于所述第一界面发出的界面切换指令时,获取所述界面切换指令所指定的第二界面的预加载的界面实例,并获取计算完成的所述第二界面的业务数据;所述第二界面为所述关联的界面中的任意一个;
根据所述第二界面对应的业务数据和界面实例,加载所述第二界面。
在其中一个实施例中,所述预加载所述第一界面所关联的各个界面的界面实例包括:
通过独立于主线程的异步线程,预加载所述第一界面所关联的各个界面的界面实例。
在其中一个实施例中,所述确定所述第一界面所关联的界面包括:
根据登录所述客户端的用户的用户角色,确定在所述第一界面所关联的各个界面中所述用户具有权限的界面;
所述通过独立于主线程的异步线程,预加载所述第一界面所关联的各个界面的界面实例包括:
通过独立于主线程的异步线程,预加载所述用户具有权限的各个界面的界面实例。
在其中一个实施例中,在客户端加载完成第一界面后,所述方法还包括:
若所述第一界面为业务单元界面,则执行所述确定所述第一界面所关联的界面的步骤;
若所述第一界面为单据界面、且接收到基于所述第一界面发出的单据转换指令,则确定所述单据转换指令所指定的目标单据类型;
通过独立于主线程的异步线程,预加载所述目标单据类型对应的第三界面的界面实例;所述第三界面为单据界面;
获取计算完成的所述第三界面的业务数据;
根据所述第三界面对应的业务数据和界面实例,加载所述第三界面。
在其中一个实施例中,所述方法还包括:
在检测到用户登录客户端后,通过独立于主线程的异步线程,依次预加载常用界面队列中的前第一预设数量的常用界面的界面实例;所述常用界面包括所述用户收藏的界面;
在接收到基于所述客户端中第一层级的界面发出的界面打开指令后,检测是否存在所述界面打开指令所指定的第四界面的界面实例;
若存在,则获取所述第四界面的界面实例,并获取计算完成的所述第四界面的业务数据;
根据所述第四界面对应的业务数据和界面实例,加载所述第四界面。
在其中一个实施例中,在所述获取所述第四界面的界面实例之后,所述方法还包括:
将所述第四界面标记至所述常用界面队列中;
在下次检测到所述用户登录所述客户端后,执行所述通过独立于主线程的异步线程,依次预加载常用界面队列中的前第一预设数量的常用界面的界面实例及后续步骤。
在其中一个实施例中,所述方法还包括:
当预加载的常用界面的界面实例的数量超过预设阈值时,按照以下步骤中的至少一种清理界面实例:
清理未被打开的时长最长的界面对应的界面实例;
清理未被打开的时长超过预设时间阈值的界面对应的界面实例;
将界面按照未被打开的时长从大到小的顺序排序,清理排在前第二预设数量的界面对应的界面实例。
一种界面加载装置,所述装置包括:
预加载界面确定模块,用于在客户端加载完成第一界面后,确定所述第一界面所关联的界面;所述第一界面为所述客户端中除第一层级的界面之外的任意一个层级的界面;所述关联的界面包括至少一个界面;
预加载模块,用于预加载所述第一界面所关联的各个界面的界面实例;
获取模块,用于当接收到基于所述第一界面发出的界面切换指令时,获取所述界面切换指令所指定的第二界面的预加载的界面实例,并获取计算完成的所述第二界面的业务数据;所述第二界面为所述关联的界面中的任意一个;
界面加载模块,用于根据所述第二界面对应的业务数据和界面实例,加载所述第二界面。
一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行本申请各实施例所述的界面加载方法中的步骤。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行本申请各实施例所述的界面加载方法中的步骤。
上述界面加载方法、装置、计算机设备和存储介质,在客户端加载完成第一界面后,确定第一界面所关联的至少一个界面,第一界面为客户端中除第一层级之外的任意一个层级的界面,然后预加载第一界面所关联的各个界面的界面实例,从而能够提前预加载用户可能将要打开的界面的界面实例,当接收到基于第一界面发出的界面切换指令时,可以直接获取界面切换指令所指定的第二界面的已经预加载完成的界面实例,并获取计算完成的第二界面的业务数据,从而快速地根据第二界面对应的业务数据和界面实例,加载第二界面,从而在加载第二界面时,无需初始化渲染界面控件,而是可以直接填充数据生成第二界面,提高了界面加载效率。
附图说明
图1为一个实施例中界面加载方法的流程示意图;
图2为一个实施例中第一界面为业务单元界面时的界面加载方法的流程示意图;
图3为一个实施例中第一界面为单据界面时的界面加载方法的流程示意图;
图4为一个实施例中登录客户端后的界面加载方法的流程示意图;
图5为一个实施例中界面加载装置的结构框图;
图6为另一个实施例中界面加载装置的结构框图;
图7为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种界面加载方法,本实施例以该方法应用于终端进行举例说明,可以理解的是,该方法也可以应用于包括终端和服务器的系统,并通过终端和服务器的交互实现。其中,终端可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。本实施例中,该方法包括以下步骤:
S102,在客户端加载完成第一界面后,确定第一界面所关联的界面;第一界面为客户端中除第一层级的界面之外的任意一个层级的界面;关联的界面包括至少一个界面。
其中,客户端(或称为用户端),是指与服务器相对应,为客户提供本地服务的程序。除了一些只在本地运行的应用程序之外,客户端一般安装在普通的客户机上,需要与服务端互相配合运行。
第一层级的界面,是指客户端的首页的界面。客户端中除第一层级的界面之外的界面,是指客户端中除首页之外的各层级的界面。客户端中除第一层级的界面之外的界面包括第二层级的界面、第三层级的界面……和第n层级的界面(n为大于等于2的整数)。比如:基于第一层级的界面(即首页)进一步打开的是第二层级的界面,基于第二层级的界面进一步打开的是第三层级的界面,以此类推。
第一界面所关联的界面,是指能够基于第一界面进一步打开的界面,即,比第一界面高一个层级的界面。比如:若第一界面为第三层级的界面,则第一界面所关联的界面为第四层级的界面。
在一个实施例中,客户端可以为ERP(Enterprise Resource Planning,企业资源计划)系统、OA(Office Automation,办公自动化)系统或CRM(Customer RelationshipManagement,客户关系管理)系统等企业办公系统中的任意一种对应的客户端。
在一个实施例中,若第一界面为业务单元界面,则终端可以在客户端加载完成第一界面后,根据第一界面所对应的业务单元的描述文件,确定第一界面所关联的界面。
其中,第一界面为业务单元界面,是指第一界面对应一个虚拟的业务单元。不同的业务单元各自对应一个描述文件。描述文件用于记录相应的业务单元下涉及的各个界面,即,描述文件用于记录第一界面所关联的界面。
例如:第一界面为采购订单界面,则第一界面对应采购订单这一业务单元,采购订单这一业务单元的描述文件用于记录采购订单这一业务单元下涉及的界面。比如:采购订单这一业务单元下涉及的界面可以包括提交采购订单的界面和查看采购商家信息的界面等中的至少一种。
在一个实施例中,描述文件所记录的可以是第一界面所关联的界面的界面名和界面标识等信息中的至少一种。
S104,预加载第一界面所关联的各个界面的界面实例。
其中,界面实例,是指没有填充具体数据的界面模板。
在一个实施例中,终端可以通过主线程预加载第一界面所关联的各个界面的界面实例。
在另一个实施例中,终端可以通过独立于主线程的异步线程,预加载第一界面所关联的各个界面的界面实例。
在一个实施例中,终端可以建立缓存区,并将预加载的各个界面的界面实例存储至缓存区。
在一个实施例中,终端可以根据用户的用户角色,预估用户将要切换至的界面,终端可以预加载预估的界面的界面实例。预估的界面为第一界面所关联的各个界面中的至少一个。比如:终端可以根据用户的用户角色的职能,预估用户将要切换至的界面。比如:用户角色的职能为采购,而第一界面的业务单元为采购订单,则终端可以预估用户将要切换至的界面为采购订单这一业务单元下涉及的查看采购商家信息的界面。
在一个实施例中,终端可以根据第一界面对应的业务单元下涉及的各个业务流程和在各个业务流程中当前已执行的流程节点,预估将要切换至的至少一个界面,终端可以预加载预估的界面的界面实例。可以理解,预估的界面为第一界面所关联的各个界面中的至少一个。
在一个实施例中,预估的将要切换至的至少一个界面,可以是业务流程中的、且在当前已执行的流程节点之后的至少一个流程节点所对应的界面。
比如:用户在业务流程中已完成请款操作(即在业务流程中当前已执行完请款这一流程节点),由于在业务流程中,请款这一流程节点的下一流程节点为出账单,所以终端可以预估用户将要切换至的界面为对应于出账单这一流程节点的账单开具界面。其中,账单开具界面,是用于开具账单的操作界面。
S106,当接收到基于第一界面发出的界面切换指令时,获取界面切换指令所指定的第二界面的预加载的界面实例,并获取计算完成的第二界面的业务数据;第二界面为关联的界面中的任意一个。
其中,界面切换指令,是基于第一界面打开第二界面的指令。第二界面是第一界面所关联的界面中的任意一个,即第二界面是比第一界面高一层级的界面。
具体地,当接收到基于第一界面发出的界面切换指令时,终端可以根据界面切换指令,确定所需加载的第二界面,然后获取第二界面对应的已经加载完成的界面实例,并获取计算完成的第二界面的业务数据。
在一个实施例中,终端可以通过主线程计算第二界面的业务数据,得到计算完成的第二界面的业务数据。
在另一个实施例中,终端的主线程可以进行等待,由服务器计算第二界面的业务数据并返回至终端,终端可以获取服务器计算完成的第二界面的业务数据。
S108,根据第二界面对应的业务数据和界面实例,加载第二界面。
具体地,终端可以用第二界面的业务数据对第二界面的界面实例进行填充,得到第二界面,从而第二界面加载完成。
上述界面加载方法中,在客户端加载完成第一界面后,确定第一界面所关联的至少一个界面,第一界面为客户端中除第一层级之外的任意一个层级的界面,然后预加载第一界面所关联的各个界面的界面实例,从而能够提前预加载用户可能将要打开的界面的界面实例,当接收到基于第一界面发出的界面切换指令时,可以直接获取界面切换指令所指定的第二界面的已经预加载完成的界面实例,并获取计算完成的第二界面的业务数据,从而快速地根据第二界面对应的业务数据和界面实例,加载第二界面,从而在加载第二界面时,无需初始化渲染界面控件,而是可以直接填充数据生成第二界面,提高了界面加载效率。
在一个实施例中,步骤S104包括:通过独立于主线程的异步线程,预加载第一界面所关联的各个界面的界面实例。
如图2所示,为第一界面为业务单元界面时的界面加载方法的流程示意图。在第一界面加载完成后,终端可以确定第一界面所关联的界面,并启动异步线程,通过异步线程预加载第一界面所关联的各个界面的界面实例。在接收到界面切换指令后,终端可以获取界面切换指令所指定的第二界面的界面实例,然后在界面实例中填充业务数据,生成第二界面。
本实施例中,采用生产者消费者的模式,终端可以通过独立于主线程的异步线程,预加载第一界面所关联的各个界面的界面实例,从而不影响主线程的处理进程,提高了客户端的响应速度。此外,提前预加载用户可能将要打开的界面的界面实例,能够在需要加载下一个界面时能够直接填充数据快速地生成界面,提高了界面加载效率。
在一个实施例中,确定第一界面所关联的界面包括:根据登录客户端的用户的用户角色,确定在第一界面所关联的各个界面中用户具有权限的界面;通过独立于主线程的异步线程,预加载第一界面所关联的各个界面的界面实例包括:通过独立于主线程的异步线程,预加载用户具有权限的各个界面的界面实例。
在一个实施例中,用户角色可以为用户的岗位、用户所属的部门和用户的级别等中的任意一种。
具体地,终端可以根据登录客户端的用户的用户角色,确定在第一界面所关联的各个界面中该用户角色具有权限的界面,从而确定该用户具有权限的界面。然后,终端可以通过独立于主线程的异步线程,预加载该用户具有权限的各个界面的界面实例。
例如:在采购订单这一第一界面所关联的提交采购订单的界面和查看采购商家信息的界面这两个界面中,假如用户的用户角色仅对提交采购订单的界面具有权限,而对查看采购商家信息的界面不具有权限,则终端可以仅预加载提交采购订单的界面,而无需预加载查看采购商家信息的界面。
本实施例中,终端可以根据用户角色确定第一界面所关联的各个界面中用户具有权限的界面,预加载该用户具有权限的各个界面的界面实例,从而使得预加载的界面实例更加有针对性,避免了预加载用不到的界面实例,提高了预加载的效率,且避免了系统资源的浪费。
在一个实施例中,在客户端加载完成第一界面后,方法还包括:若第一界面为业务单元界面,则执行确定第一界面所关联的界面的步骤;若第一界面为单据界面、且接收到基于第一界面发出的单据转换指令,则确定单据转换指令所指定的目标单据类型;通过独立于主线程的异步线程,预加载目标单据类型对应的第三界面的界面实例;第三界面为单据界面;获取计算完成的第三界面的业务数据;根据第三界面对应的业务数据和界面实例,加载第三界面。
其中,单据界面,是用于展示单据的界面。单据转换指令,是将第一界面中的单据,转换成指定类型(即目标单据类型)的单据的指令。目标单据类型,是需要将第一界面中的单据转换成的目标单据的类型。第三界面,是用于展示将第一界面中的单据转换为目标单据类型的单据的界面。
在一个实施例中,在客户端加载完成第一界面后,若第一界面为业务单元界面(即,第一界面对应一个业务单元),则终端可以执行确定第一界面所关联的界面,预加载第一界面所关联的各个界面的界面实例的步骤,并且当接收到基于第一界面发出的界面切换指令时,终端可以获取界面切换指令所指定的第二界面的预加载的界面实例,并获取计算完成的第二界面的业务数据,根据第二界面对应的业务数据和界面实例,加载第二界面。
在一个实施例中,在客户端加载完成第一界面后,若第一界面为单据界面,则用户可以选择目标单据类型,终端可以根据用户选择的目标单据类型生成单据转换指令,并响应于单据转换指令,通过独立于主线程的异步线程,预加载单据转换指令所指定的目标单据类型对应的第三界面的界面实例,并获取计算完成的第三界面的业务数据,然后通过第三界面的业务数据对第三界面的界面实例进行填充,生成第三界面。
例如:可以将采购订单转换为采购入库单,可以将采购入库单转换为入库记录单,可以将入库记录单转换为付款单。比如,当前的第一界面中的单据为采购订单,用户想要将该采购订单转换为采购入库单,则用户可以选择目标单据类型为采购入库单,终端可以根据用户操作生成单据转换指令,并响应于单据转换指令,加载用于展示采购入库单的第三界面。
在一个实施例中,客户端可以提供一种或多种目标单据类型供用户选择。
在一个实施例中,终端可以通过前台的独立于主线程的异步线程,预加载单据转换指令所指定的目标单据类型对应的第三界面的界面实例,由后台的服务器计算第三界面的业务数据并返回至终端,终端可以获取服务器计算完成的第三界面的业务数据。
在另一个实施例中,终端可以通过前台的独立于主线程的异步线程,预加载单据转换指令所指定的目标单据类型对应的第三界面的界面实例,并通过后台计算第三界面的业务数据,得到计算完成的第三界面的业务数据。
如图3所示,在第一界面加载完成后,若第一界面为单据界面,则在接收到单据转换指令后,终端可以确定单据转换指令所指定的目标单据类型,并启动异步线程,通过异步线程预加载目标单据类型对应的第三界面的界面实例,然后获取后台计算完成的业务数据,在第三界面的界面实例中填充业务数据,生成第三界面。
本实施例中,在接收到单据转换指令后,终端可以通过前台预加载界面实例,后台计算业务数据的方式,提高界面加载效率。
在一个实施例中,该方法还包括:在检测到用户登录客户端后,通过独立于主线程的异步线程,依次预加载常用界面队列中的前第一预设数量的常用界面的界面实例;常用界面包括用户收藏的界面;在接收到基于客户端中第一层级的界面发出的界面打开指令后,检测是否存在界面打开指令所指定的第四界面的界面实例;若存在,则获取第四界面的界面实例,并获取计算完成的第四界面的业务数据;根据第四界面对应的业务数据和界面实例,加载第四界面。
其中,常用界面队列,是用于存储常用界面的队列。用户收藏的界面,是用户的日常使用客户端的过程中自主收藏的界面。界面打开指令,是基于第一层级的界面打开下一个层级的界面的指令。第四界面,是界面打开指令所指定的待打开的界面。
在一个实施例中,常用界面队列中存储的可以是界面的界面名和界面标识等中的任意一种。
可以理解,一个用户对应一个常用界面队列,从而终端可以根据不同用户各自对应的常用队列界面,个性化地预加载用户的常用界面的界面实例。
具体地,在检测到用户登录客户端后,终端可以通过独立于主线程的异步线程,依次预加载常用界面队列中的前第一预设数量的常用界面的界面实例。
可以理解,依次预加载常用界面队列中的常用界面的界面实例,是按照界面在常用界面队列中的逆序进行预加载的,即,最先加入常用界面队列中的界面要轮到最后才预加载,最后加入常用界面队列中的界面最先进行预加载。比如:界面A、B、C、D、E和F分别按顺序加入到常用界面队列中,假如第一预设数量为4,则终端依次预加载界面F、E、D和C的界面实例。
在一个实施例中,常用界面除了用户收藏的界面之外,还可以包括用户打开过的界面。
在一个实施例中,在接收到基于客户端中第一层级的界面(即,客户端的首页)发出的界面打开指令后,终端可以检测是否存在界面打开指令所指定的第四界面的界面实例(即,是否已经预加载了第四界面的界面实例)。
在一个实施例中,若存在界面打开指令所指定的第四界面的界面实例,则表明已经预加载完成了第四界面的界面实例,则终端可以获取计算完成的第四界面的业务数据,然后用第四界面的业务数据对第四界面的界面实例进行填充,得到第四界面。
在一个实施例中,若不存在界面打开指令所指定的第四界面的界面实例,则表明没有对第四界面的界面实例进行预加载,则终端可以初始化渲染界面控件,生成界面实例,并获取计算完成的第四界面的业务数据,然后用第四界面的业务数据对第四界面的界面实例进行填充,得到第四界面。
在一个实施例中,终端可以通过主线程计算第四界面的业务数据,得到计算完成的第四界面的业务数据。
在另一个实施例中,终端的主线程可以进行等待,由服务器计算第四界面的业务数据并返回至终端,终端可以获取服务器计算完成的第四界面的业务数据。
可以理解,第四界面是基于客户端中第一层级的界面打开的界面,所以第四界面是第二层级的界面。而第一界面是除第一层级的界面之外的任意一个层级的界面。因此,第一界面可能为第四界面,也可能不为第四界面。
在一个实施例中,终端可以将预加载的界面实例存储至缓存区。
本实施例中,终端可以根据常用界面队列,提前预加载用户可能会打开的界面的界面实例,从而在接收到界面打开指令后,若存在界面打开指令所指定的界面的界面实例,则可以直接用业务数据进行填充,无需初始化渲染界面控件,提高了界面加载效率。
在一个实施例中,在获取第四界面的界面实例之后,方法还包括:将第四界面标记至常用界面队列中;在下次检测到用户登录客户端后,执行通过独立于主线程的异步线程,依次预加载常用界面队列中的前第一预设数量的常用界面的界面实例及后续步骤。
在一个实施例中,在获取第四界面的界面实例之后,终端可以将第四界面的界面名或界面标识等信息中的任意一种存储至常用界面队列中。
可以理解,在下次检测到该用户登录该客户端后,则该用户对应的常用队列中因为新增了第四界面,且排在队列最后,所以依次预加载常用界面队列中的前第一预设数量的常用界面的界面实例这一步骤会第一个预加载第四界面的界面实例,这样实现了优先预加载用户最近使用过的界面的界面实例。
在一个实施例中,终端可以将用户打开过的界面标记至常用界面队列中。在一个实施例中,用户每打开一个界面,终端则将该界面标记至常用界面队列中。
如图4所示,为本申请各实施例中在用户登录客户端后终端预加载常用界面的界面实例的流程示意图。在检测到用户登录客户端后,终端可以将常用界面标记到常用界面队列中,并启动异步线程,通过异步线程依次预加载常用界面队列中的前第一预设数量的界面的界面实例。在接收到界面打开指令后,终端可以确定是否存在界面打开指令所指定的界面的界面实例,若存在,则获取指定的界面的界面实例,若不存在,则初始化渲染界面控件,生成界面实例。然后,终端可以将该界面标记到常用界面队列中,并且在界面实例中填充业务数据,生成界面。
本实施例中,终端可以将用户打开过的界面标记至常用界面队列,在用户登录客户端后,预加载常用界面队列中的常用界面的界面实例,实现了根据用户的使用习惯,预估用户可能会打开的界面,提前预加载用户可能会打开的界面的界面实例,从而在接收到界面打开指令后,若存在界面打开指令所指定的界面的界面实例,则可以直接用业务数据进行填充,无需初始化渲染界面控件,提高了界面加载效率。根据局部原理,用户用到过什么界面,再次打开就会变得很快。
在一个实施例中,该方法还包括:当预加载的常用界面的界面实例的数量超过预设阈值时,按照以下步骤中的至少一种清理界面实例:清理未被打开的时长最长的界面对应的界面实例;清理未被打开的时长超过预设时间阈值的界面对应的界面实例;将界面按照未被打开的时长从大到小的顺序排序,清理排在前第二预设数量的界面对应的界面实例。
在一个实施例中,当预加载的常用界面的界面实例的数量超过预设阈值时,终端可以将未被打开的时长最长的界面对应的界面实例清理掉。
在一个实施例中,当预加载的常用界面的界面实例的数量超过预设阈值时,终端可以将未被打开的时长超过预设时间阈值的界面对应的界面实例清理掉。
在一个实施例中,当预加载的常用界面的界面实例的数量超过预设阈值时,终端可以将界面按照未被打开的时长从大到小的顺序排序,清理掉排在前第二预设数量的界面对应的界面实例。
在一个实施例中,终端可以采用LRU(Least Recently Used,最近最少使用)算法,保证预加载的常用界面的界面实例的数量不超过预设阈值。
本实施例中,终端可以当预加载的常用界面的界面实例的数量超过预设阈值时,按照一定的规则对预加载的界面实例进行清理,从而能够保留用户常用界面的界面实例,避免系统资源的浪费。
应该理解的是,虽然图1的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图5所示,提供了一种界面加载装置500,包括:预加载界面确定模块502、预加载模块504、获取模块506和界面加载模块508,其中:
预加载界面确定模块502,用于在客户端加载完成第一界面后,确定第一界面所关联的界面;第一界面为客户端中除第一层级的界面之外的任意一个层级的界面;关联的界面包括至少一个界面。
预加载模块504,用于预加载第一界面所关联的各个界面的界面实例。
获取模块506,用于当接收到基于第一界面发出的界面切换指令时,获取界面切换指令所指定的第二界面的预加载的界面实例,并获取计算完成的第二界面的业务数据;第二界面为关联的界面中的任意一个。
界面加载模块508,用于根据第二界面对应的业务数据和界面实例,加载第二界面。
在一个实施例中,预加载模块504还用于通过独立于主线程的异步线程,预加载第一界面所关联的各个界面的界面实例。
在一个实施例中,预加载界面确定模块502还用于根据登录客户端的用户的用户角色,确定在第一界面所关联的各个界面中用户具有权限的界面。预加载模块504还用于通过独立于主线程的异步线程,预加载用户具有权限的各个界面的界面实例。
在一个实施例中,预加载界面确定模块502还用于在客户端加载完成第一界面后,若第一界面为业务单元界面,则执行确定第一界面所关联的界面的步骤。
在一个实施例中,预加载界面确定模块502还用于在客户端加载完成第一界面后,若第一界面为单据界面、且接收到基于第一界面发出的单据转换指令,则确定单据转换指令所指定的目标单据类型。
预加载模块504还用于通过独立于主线程的异步线程,预加载目标单据类型对应的第三界面的界面实例;第三界面为单据界面。获取模块506还用于获取计算完成的第三界面的业务数据。界面加载模块508还用于根据第三界面对应的业务数据和界面实例,加载第三界面。
在一个实施例中,预加载模块504还用于在检测到用户登录客户端后,通过独立于主线程的异步线程,依次预加载常用界面队列中的前第一预设数量的常用界面的界面实例;常用界面包括用户收藏的界面。获取模块506还用于在接收到基于客户端中第一层级的界面发出的界面打开指令后,检测是否存在界面打开指令所指定的第四界面的界面实例;若存在,则获取第四界面的界面实例,并获取计算完成的第四界面的业务数据。界面加载模块508还用于根据第四界面对应的业务数据和界面实例,加载第四界面。
在一个实施例中,界面加载装置500还包括:
常用界面标记模块510,用于将第四界面标记至常用界面队列中。
预加载模块504还用于在下次检测到用户登录客户端后,执行通过独立于主线程的异步线程,依次预加载常用界面队列中的前第一预设数量的常用界面的界面实例及后续步骤。
在一个实施例中,如图6所示,界面加载装置500还包括:
清理模块512,用于当预加载的常用界面的界面实例的数量超过预设阈值时,按照以下步骤中的至少一种清理界面实例:清理未被打开的时长最长的界面对应的界面实例;清理未被打开的时长超过预设时间阈值的界面对应的界面实例;将界面按照未被打开的时长从大到小的顺序排序,清理排在前第二预设数量的界面对应的界面实例。
关于界面加载装置的具体限定可以参见上文中对于界面加载方法的限定,在此不再赘述。上述界面加载装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种界面加载方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
- 界面加载方法、装置、计算机设备和存储介质
- 界面预加载方法及装置、移动终端及计算机可读存储介质