节点处理方法、装置、计算机可读存储介质及计算机设备_第1页
节点处理方法、装置、计算机可读存储介质及计算机设备_第2页
节点处理方法、装置、计算机可读存储介质及计算机设备_第3页
节点处理方法、装置、计算机可读存储介质及计算机设备_第4页
节点处理方法、装置、计算机可读存储介质及计算机设备_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(19)国家知识产权局

(12)发明专利申请

(10)申请公布号CN115525196A

(43)申请公布日2022.12.27

(21)申请号202110641526.8

(22)申请日2021.06.09

(71)申请人腾讯科技(深圳)有限公司

地址518057广东省深圳市南山区高新区

科技中一路腾讯大厦35层

(72)发明人李娜芬李斌罗程梁百怡

(74)专利代理机构深圳翼盛智成知识产权事务

所(普通合伙)44300

专利代理师李汉亮

(51)Int.CI.

G06F3/0484(2022.01)

G06F3/0482(2013.01)

G06F3/0481(2022.01)

G06F3/04877(2022.01)

权利要求书3页说明书17页附图7页

(54)发明名称

节点处理方法、装置、计算机可读存储介质

及计算机设备

(57)摘要

本发明实施例公开了一种节点处理方法、装

置、计算机可读存储介质及计算机设备。方法通

过获取目标控件的显示区域;确定显示区域中包

含的第一子控件集合;响应于对显示区域中的显

示内容的调节操作,获取调节操作在显示区域中

指示的第二子控件集合;确定第一子控件集合和

第二子控件集合的交集;将第一子控件集合中不确定第牛集合和第二子控件集合的交集

属于交集的子控件对应的节点存储至节点池中;

通过更新后的节点池中的节点生成第二子控件

集合中不属于交集的子控件。该方法可以提升节

点处理效率,在满足显示区域中控件正常显示的

v场景下,极大地减少了所需节点的数量,减少了

g内存消耗,从而提升了系统运行效率。

g

z

g

rg-H

g

CN115525196A权利要求书1/3页

1.一种节点处理方法,其特征在于,所述方法包括:

获取目标控件的显示区域,所述目标控件包括至少一个树形控件或列表控件;

确定所述显示区域中包含的第一子控件集合;

响应于对所述显示区域中的显示内容的调节操作,获取所述调节操作在所述显示区域

中指示的第二子控件集合;

确定所述第一子控件集合和所述第二子控件集合的交集;

将所述第一子控件集合中不属于所述交集的子控件对应的节点存储至节点池中;

通过更新后的节点池中的节点生成所述第二子控件集合中不属于所述交集的子控件。

2.根据权利要求1所述的方法,其特征在于,所述响应于对所述显示区域中的显示内容

的调节操作,获取所述调节操作在所述显示区域中指示的第二子控件集合,包括:

响应于显示区域中接收到的滚动操作,获取所述滚动操作造成所述目标控件相对所述

显示区域的位移;

根据所述位移确定所述目标控件在经过所述滚动操作后与所述显示区域对应的第二

子控件集合。

3.根据权利要求2所述的方法,其特征在于,所述根据所述位移确定所述目标控件在经

过所述滚动操作后与所述显示区域对应的第二子控件集合,包括:

获取所述第一子控件集合中包含的子控件的第一标签范围;

获取所述目标控件当前状态下所有子控件的高度信息;

根据所述第一标签范围、所述位移以及所述所有子控件的高度信息确定滚动操作后所

述显示区域中包含的子控件的第二标签范围;

根据所述第二标签范围确定第二子控件集合。

4.根据权利要求1所述的方法,其特征在于,所述响应于对所述显示区域中的显示内容

的调节操作,获取所述调节操作在所述显示区域中指示的第二子控件集合,包括:

响应于针对所述显示区域中目标子控件的展开操作,获取所述目标子控件包含的次级

子控件信息;

根据所述次级子控件信息确定在所述展开操作后所述目标控件与所述显示区域对应

的第二子控件集合。

5.根据权利要求1所述的方法,其特征在于,所述通过更新后的节点池中的节点生成所

述第二子控件集合中不属于所述交集的子控件,包括:

确定所述第二子控件集合中不属于所述交集的子控件集合为第三子控件集合,并确定

所述第三子控件集合中包含元素的目标数量;

从更新后的节点池中获取所述目标数量个节点;

根据所述目标数量个节点生成所述第三子控件集合中的子控件。

6.根据权利要求5所述的方法,其特征在于,所述根据所述目标数量个节点生成所述第

三子控件集合中的子控件,包括:

对所述目标数量个节点进行初始化,得到所述目标数量个初始化后的节点;

对所述目标数量个初始化后的节点进行渲染,生成所述第三子控件集合中的子控件。

7.根据权利要求5所述的方法,其特征在于,所述从更新后的节点池中获取所述目标数

量个节点,包括:

2

CN115525196A权利要求书2/3页

确定所述第三子控件集合中每个子控件的节点类型;

从更新后的节点池中逐一获取与所述每个子控件的节点类型对应的节点,得到所述目

标数量个节点。

8.根据权利要求5所述的方法,其特征在于,所述从更新后的节点池中获取所述目标数

量个节点,包括:

当检测到更新后的节点池中的节点的数量不小于所述目标数量时,从所述更新后的节

点池中获取所述目标数量个节点;

当检测到所述更新后的节点池中的节点的数量小于所述目标数量时,在所述更新后的

节点池中创建新节点,直至节点池中节点数量达到所述目标数量,以及从所述节点池中获

取所述目标数量个节点。

9.一种节点处理装置,其特征在于,所述装置包括:

第一获取单元,用于获取目标控件的显示区域,所述目标控件包括至少一个树形控件

或列表控件;

第一确定单元,用于确定所述显示区域中包含的第一子控件集合;

第二获取单元,用于响应于对所述显示区域中的显示内容的调节操作,获取所述调节

操作在所述显示区域中指示的第二子控件集合;

第二确定单元,用于确定所述第一子控件集合和所述第二子控件集合的交集;

存储单元,用于将所述第一子控件集合中不属于所述交集的子控件对应的节点存储至

节点池中;

生成单元,用于通过更新后的节点池中的节点生成所述第二子控件集合中不属于所述

交集的子控件。

10.根据权利要求9所述的装置,其特征在于,所述第二获取单元,包括:

第一获取子单元,用于响应于显示区域中接收到的滚动操作,获取所述滚动操作造成

所述目标控件相对所述显示区域的位移;

第一确定子单元,用于根据所述位移确定所述目标控件在经过所述滚动操作后与所述

显示区域对应的第二子控件集合。

11.根据权利要求10所述的装置,其特征在于,所述第一确定子单元,包括:

第一获取模块,用于获取所述第一子控件集合中包含的子控件的第一标签范围;

第二获取模块,用于获取所述目标控件当前状态下所有子控件的高度信息;

第一确定模块,用于根据所述第一标签范围、所述位移以及所述所有子控件的高度信

息确定滚动操作后所述显示区域中包含的子控件的第二标签范围;

第二确定模块,用于根据所述第二标签范围确定第二子控件集合。

12.根据权利要求9所述的装置,其特征在于,所述第二获取单元,包括:

第二获取子单元,用于响应于针对所述显示区域中目标子控件的展开操作,获取所述

目标子控件包含的次级子控件信息;

第二确定子单元,用于根据所述次级子控件信息确定在所述展开操作后所述目标控件

与所述显示区域对应的第二子控件集合。

13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有多条指

令,所述指令适于处理器进行加载,以执行权利要求1至8中任一项所述的节点处理方法的

3

CN115525196A权利要求书3/3页

步骤。

14.一种计算机设备,其特征在于,包括存储器、处理器以及存储在所述存储器中并可

以在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现权利要求1

至8任一项所述的节点处理方法的步骤。

15.一种计算机程序,其特征在于,所述计算机程序包括计算机指令,所述计算机指令

存储在存储介质中,计算机设备的处理器从所述存储介质读取所述计算机指令,所述处理

器执行所述计算机指令,使得所述计算机设备执行权利要求1至8中任一项所述的节点处理

方法的步骤。

4

CN115525196A说明书1/17页

节点处理方法'装置'计算机可读存储介质及计算机设备

技术领域

[0001]本发明涉及计算机技术领域,具体涉及一种节点处理方法、装置、计算机可读存储

介质及计算机设备。

背景技术

[0002]即时通讯(InstantMessaging,IM)是目前互联网时代最为流行的通讯方式,各种

各样的即时通讯软件也层出不穷;服务提供商也提供了越来越丰富的通讯服务功能。

[0003]在即时通讯应用程序的通讯录展示界面,往往以树形控件或者列表控件的形式对

联系人进行展示,如此可以使得联系人结构分布清晰,更方便用户尽快找到目标联系人。

[0004]目前即时通讯应用程序中会为每个联系人目前,在使用树形控件或者列表控件进

行数据展示时,需要先为树形控件中每个联系人建立对应的节点,如此当联系人不断增多

时,节点的数量也不断增加。节点数量的不断增加使得对终端内存的占用越来越大,进而降

低了终端的运行效率。

发明内容

[0005]本申请实施例提供一种节点处理方法、装置、计算机可读存储介质及计算机设备,

该方法通过设置节点池来实现子控件对应节点的回收和复用,如此只需生成显示区域中子

控件对应的节点以及节点池中的节点,无需对每个子控件均生成相应节点。该方法可以大

大减少控件所需节点的数量,减少了内存消耗。

[0006]本申请第一方面提供一种节点处理方法,包括:

[0007]获取目标控件的显示区域,所述目标控件包括至少一个树形控件或列表控件;

[0008]确定所述显示区域中包含的第一子控件集合;

[0009]响应于对所述显示区域中的显示内容的调节操作,获取所述调节操作在所述显示

区域中指示的第二子控件集合;

[0010]确定所述第一子控件集合和所述第二子控件集合的交集;

[0011]将所述第一子控件集合中不属于所述交集的子控件对应的节点存储至节点池中;

[0012]通过更新后的节点池中的节点生成所述第二子控件集合中不属于所述交集的子

控件。

[0013]相应的,本申请第二方面提供一种节点处理装置,装置包括:

[0014]第一获取单元,用于获取目标控件的显示区域,所述目标控件包括至少一个树形

控件或列表控件;

[0015]第一确定单元,用于确定所述显示区域中包含的第一子控件集合;

[0016]第二获取单元,用于响应于对所述显示区域中的显示内容的调节操作,获取所述

调节操作在所述显示区域中指示的第二子控件集合;

[0017]第二确定单元,用于确定所述第一子控件集合和所述第二子控件集合的交集;

[0018]存储单元,用于将所述第一子控件集合中不属于所述交集的子控件对应的节点存

5

CN115525196A说明书2/17页

储至节点池中;

[0019]生成单元,用于通过更新后的节点池中的节点生成所述第二子控件集合中不属于

所述交集的子控件。

[0020]在一些实施例中,所述第二获取单元,包括:

[0021]第一获取子单元,用于响应于显示区域中接收到的滚动操作,获取所述滚动操作

造成所述目标控件相对所述显示区域的位移;

[0022]第一确定子单元,用于根据所述位移确定所述目标控件在经过所述滚动操作后与

所述显示区域中对应的第二子控件集合。

[0023]在一些实施例中,所述第一确定子单元,包括:

[0024]第一获取模块,用于获取所述第一子控件集合中包含的子控件的第一标签范围;

[0025]第二获取模块,用于获取所述目标控件当前状态下所有子控件的高度信息;

[0026]第一确定模块,用于根据所述第一标签范围、所述位移以及所述所有子控件的高

度信息确定滚动操作后所述显示区域中包含的子控件的第二标签范围;

[0027]第二确定模块,用于根据所述第二标签范围确定第二子控件集合。

[0028]在一些实施例中,所述第二获取单元,包括:

[0029]第二获取子单元,用于响应于针对所述显示区域中目标子控件的展开操作,获取

所述目标子控件包含的次级子控件信息;

[0030]第二确定子单元,用于根据所述次级子控件信息确定在所述展开操作后所述目标

控件与所述显示区域对应的第二子控件集合。

[0031]在一些实施例中,所述生成单元,包括:

[0032]第三确定子单元,用于确定所述第二子控件集合中不属于所述交集的子控件集合

为第三子控件集合,并确定所述第三子控件集合中包含元素的目标数量;

[0033]第三获取子单元,用于从更新后的节点池中获取所述目标数量个节点;

[0034]生成子单元,用于根据所述目标数量个节点生成所述第三子控件集合中的子控

件。

[0035]在一些实施例中,所述生成子单元,包括:

[0036]初始化模块,用于对所述目标数量个节点进行初始化,得到所述目标数量个初始

化后的节点;

[0037]渲染模块,用于对所述目标数量个初始化后的节点进行渲染,生成所述第三子控

件集合中的子控件。

[0038]在一些实施例中,所述第三获取子单元,包括:

[0039]第三确定模块,用于确定所述第三子控件集合中每个子控件的节点类型;

[0040]第三获取模块,用于从所述更新后的节点池中逐一获取与所述每个子控件的节点

类型对应的节点,得到所述目标数量个节点。

[0041]在一些实施例中,所述第三获取子单元,包括:

[0042]第四获取模块,用于当检测到所述更新后的节点池中的节点的数量不小于所述目

标数量时,从所述更新后的节点池中获取所述目标数量个节点;

[0043]创建模块,用于当检测到所述更新后的节点池中的节点的数量小于所述目标数量

时,在所述更新后的节点池中创建新节点,直至节点池中节点数量达到所述目标数量,以及

6

CN115525196A说明书3/17页

从所述节点池中获取所述目标数量个节点。

[0044]本申请第三方面还提供一种计算机可读存储介质,所述计算机可读存储介质存储

有多条指令,所述指令适于处理器进行加载,以执行本申请第一方面或本申请第三方面所

提供的节点处理方法的步骤。

[0045]本申请第四方面提供一种计算机设备,包括存储器、处理器以及存储在所述存储

器中并可以在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本

申请第一方面或本申请第三方面所提供的节点处理方法的步骤。

[0046]本申请第五方面提供一种计算机程序产品或计算机程序,所述计算机程序产品或

计算机程序包括计算机指令,所述计算机指令存储在存储介质中。计算机设备的处理器从

存储介质读取所述计算机指令,处理器执行所述计算机指令,使得所述计算机设备执行第

一方面或本申请第三方面所提供的节点处理方法的步骤。

[0047]本申请实施例提供的节点处理方法,通过获取目标控件的显示区域,目标控件包

括至少一个树形控件或列表控件;确定显示区域中包含的第一子控件集合;响应于对显示

区域中的显示内容的调节操作,获取调节操作在显示区域中指示的第二子控件集合;确定

第一子控件集合和第二子控件集合的交集;将第一子控件集合中不属于交集的子控件对应

的节点存储至节点池中;通过更新后的节点池中的节点生成第二子控件集合中不属于交集

的子控件。以此,通过设置节点池,将调节操作导致无需在显示区域进行显示的子控件对应

的节点回收至节点池,并从节点池中调用节点生成调节操作触发需要在显示区域进行显示

的子控件。如此只需维护有限数量的节点,大大减少了所需节点的数量,减少了内存消耗,

提升了系统运行效率。

附图说明

[0048]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使

用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于

本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附

图。

[0049]图1A是本申请提供的节点处理的一个场景示意图;

[0050]图1B是本申请提供的节点处理的另一场景示意图;

[0051]图2是本申请提供的节点处理方法的流程示意图;

[0052]图3A是本申请提供的节点处理的又一场景示意图;

[0053]图3B是本申请提供的节点处理的又一场景示意图;

[0054]图4是本申请提供的节点处理方法的又一流程示意图;

[0055]图5是本申请提供的节点处理装置的结构示意图;

[0056]图6是本申请提供的终端的结构示意图。

具体实施方式

[0057]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完

整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于

本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施

7

CN115525196A说明书4/17页

例,都属于本发明保护的范围。

[0058]本发明实施例提供一种节点处理方法、装置、计算机可读存储介质及计算机设备。

其中,该节点处理方法可以使用于节点处理装置中。该节点处理装置可以集成在计算机设

备中,该计算机设备可以是终端也可以是服务器。其中,终端可以为手机、平板电脑、笔记本

电脑、智能电视、穿戴式智能设备、个人计算机(PC,PersonalComputer)等设备。服务器可

以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还

可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域

名服务、安全服务、网络加速服务(ContentDeliveryNetwork,CDN)、以及大数据和人工智

能平台等基础云计算服务的云服务器。

[0059]请参阅图1A,为本申请提供的节点处理的场景示意图;如图所示,目标控件10包括

7个列表控件:控件1、控件2、控件3、控件5、控件6、控件7以及控件8,以及一个树形控件:控

件4。此处目标控件也可以称为父控件,控件1至控件8可以称为子控件。树形控件(即控件4)

还包括7个子控件,分别为:控件41、控件42、控件43、控件44、控件45、控件46以及控件47。在

本申请中,控件4的子控件如控件41也称为子控件。

[0060]在一些实施方式中,由于计算机设备的显示屏的大小是设定的,而该目标控件10

的长度在该显示屏中进行显示时,往往无法进行全部显示,如图1A所示,该显示区域11可以

为计算机设备的显示屏的显示区域,可以看出的是,目标控件10在显示区域11只能显示一

部分,另一部分处于非显示区域,为隐藏状态。

[0061]如图1A所示,目标控件10包括显示区域11对应的部分,以及显示区域11以外的非

显示区域对应的部分。图中显示区域11包括控件3、控件4、控件41、控件42、控件43、控件44、

控件45、控件46、控件47以及控件5这10个子控件。即在显示终端上,仅可以看到上述10个子

控件,由于其他控件如控件1、控件2、控件6、控件7以及控件8都处于显示区域之外,因此在

终端的显示界面中无法看到控件1、控件2、控件6、控件7以及控件8这些控件。

[0062]在获取到目标控件的显示区域10后,确定显示区域10中包含的第一子控件集合,

即控件3、控件4、控件41、控件42、控件43、控件44、控件45、控件46、控件47以及控件5这10个

子控件组成的集合。然后,当用户在显示界面上对控件进行调节操作时,例如通过滚动显示

界面上的滚动条对控件进行滚动操作,获取调节操作在显示区域中指示的第二子控件集

合。如图1B所示,为本申请提供的节点处理的另一场景示意图。在图1B中,调节操作在显示

区域中指示的第二子控件集合为:控件41、控件42、控件43、控件44、控件45、控件46、控件

47、控件5、控件6以及控件7这10个子控件组成的集合。其中,图1B中所示只是一个示例,第

二子控件集合为根据目标控件包含的子控件信息、显示区域以及调节操作计算得到的子控

件集合。

[0063]进一步地,确定第一子控件集合与第二子控件集合的交集,此处第一子控件集合

与第二子控件集合的交集为控件4、控件41、控件42、控件43、控件44、控件45、控件46、控件

47以及控件5组成的集合。然后将第一子控件集合中不属于交集的子控件对应的节点存储

至节点池中,即将控件3对应的节点存储至节点池中。最后再通过更新后的节点池中的节点

生成第二子控件集合中不属于交集的子控件组成的第三子控件集合,此处第三子控件集合

为只包含控件5一个元素的集合。即根据更新后的节点池中的节点生成控件5。

[0064]即在本场景中,在对显示区域中的显示内容进行调节时,会根据调节前后显示区

8

CN115525196A说明书5/17页

域中显示的子控件的变化情况对子控件对应的节点进行回收以及复用,如此则无需对每个

子控件生成节点,节约了内存控件,从而提升了系统运行效率。

[0065]需要说明的是,图1A及图1B所示的节点处理的场景示意图仅仅是几个示例,本申

请实施例描述的节点处理场景是为了更加清楚地说明本申请的技术方案,并不构成对于本

申请提供的技术方案的限定。本领域普通技术人员可知,随着节点处理的演变和新业务场

景的出现,本申请提供的技术方案对于类似的技术问题,同样适用。

[0066]基于上述实施场景以下分别进行详细说明。

[0067]本申请实施例将从节点处理装置的角度进行描述,该节点处理装置可以集成在计

算机设备中。其中,计算机设备可以是终端或服务器,如图2所示,为本申请提供的节点处理

方法的流程示意图,该方法包括:

[0068]步骤101,获取目标控件的显示区域。

[0069]其中,目标控件包括至少一个树形控件或列表控件,树形控件是一种可以直观的

展示层次关系的视图展示方式,列表控件是一种可以展示并列关系的视图展示方式。具体

地,如windows系统(微软公司的一种操作系统)的资源管理器的左侧目录栏就是一种树形

控件,或者如企业微信(一款即时通讯应用程序)的联系人界面也是一种树形控件,而企业

微信的消息列表就是一种列表控件。一个列表控件可以只包含一个控件,也可以包含多个

并列的控件;而树形控件一般由一个根控件以及多个层次的子控件或孙控件组成。目标控

件包括至少一个树形控件或列表控件,即目标控件可以只包括一个树形控件或只包括一个

列表控件,也可以包括多个树形控件以及多个列表控件。

[0070]目前,对于列表控件,系统会为每个列表控件创建一个节点;对于树形控件,系统

会为每个层级的控件创建一个节点,具体地,系统会为根控件创建一个节点,为根控件下的

每个一级子控件,为每一一级子控件下的每个二级子控件创建一个节点,如此直至树形控

件中每个层级的子控件都具有其对应的节点。在采用上述列表控件或树形控件对数据进行

展示时,会同时加载所有节点。如此当数据量逐渐增加,节点数量也随之迅速增加,便会大

大占用系统的内存空间,导致系统处理效率下降。为解决上述数据量增加导致节点过多占

用大量内存空间的问题,本申请提供一种节点处理方法,下面对该方法作进一步详细描述。

[0071]在本申请实施例中,目标控件包括至少一个树形控件或列表控件,因此目标控件

可以称为父控件,目标控件中包含的树形控件或列表控件则称为子控件。而且在本申请的

方案中,树形控件的子控件,无论是哪一级(如一级、二级等)的子控件,都统一称为目标控

件的子控件。具体请继续参阅图1A,图1A中的控件4和控件41都是目标控件10的子控件。由

图1A也可知,目标控件在不同的状态下其包含的子控件的数量也是不同的,当树形控件,即

控件4的状态为展开状态时,目标控件包含15个子控件;当控件4的状态为收起时,目标控件

包含8个子控件。其中,图1A中目标控件10只是一个示意,在实际使用中,仅有显示区域11中

显示的子控件是真实可见的,其他区域的子控件是可以依据数据计算得到的,其表现也只

是相关的程序数据而非图中所示图像。在相关技术中,当需要显示多个控件(至少一个树形

控件或列表控件)时,需要将多个控件封装到一个列表中,而在本申请实施例中,多个控件

可以独立存在,无需封装到一个列表中,多个控件可以构成一个父控件,多个控件中的每个

显示单元都是父控件的子控件。当用户滚动以显示其他未显示的子控件时,整个父控件共

同滚动。

9

CN115525196A说明书6/17页

[0072]当数据量不断增加,会导致目标控件中包含的子控件的数量不断增加。而一般情

况下终端的显示界面中显示区域的尺寸是有限的,因此目标控件往往只有一部分子控件显

示在终端的显示界面中,其他的子控件则予以隐藏。当用户需要使用到处于隐藏状态的子

控件时,可以通过滚动目标控件的方式将隐藏的子控件滚动到显示区域进行显示。即目标

控件的显示区域是一个固定尺寸的区域,请继续参阅图1A,如图1A所示,其中显示区域11为

固定宽度、高度为10个控件高度之和的一个矩形区域。其中,目标控件的显示区域也对应终

端中显示该目标控件的区域。当用户滚动滚动条时,显示区域对应的矩形框不发生变化,显

示区域中显示的子控件会发生变化。

[0073]步骤102,确定显示区域中包含的第一子控件集合。

[0074]其中,此处确定显示区域中包含的第一子控件集合,为确定目标控件在当前状态

下在显示区域中显示的子控件组成的集合。如前所述,当目标控件中包含的树形控件处于

展开或者收起时,目标控件处于不同的状态;相应地,当树形控件中的任一层级的子控件在

展开或收起时,目标控件也是处于不同的状态。而在一具体的时刻,目标控件的状态是可以

获取的。例如在某一时刻t,目标控件中包含的树形控件的任一层级的子控件只会处于展开

或是收起中一确定的状态,即此时目标控件的状态也是确定的。具体地,请继续参阅图1A,

为目标控件在某一确定时刻的状态示意,此时目标控件的显示区域11中包含控件4、控件

41、控件42、控件43、控件44、控件45、控件46、控件47、控件5以及控件6这10个子控件,即第

一子控件集合包含上述10个子控件。若在另一状态下,例如树形控件,即控件4处于收起状

态时,则显示区域包含的子控件则变为控件4、控件5、控件6、控件7以及控件8这5个控件。

[0075]其中,在本申请实施例中,需要对显示在显示区域的子控件创建其对应的节点,系

统通过加载其对应的节点将子控件显示在终端的显示区域中。对于没有在显示区域中显示

的子控件,则无需为其创建节点也无需进行加载。

[0076]步骤103,响应于对显示区域中的显示内容的调节操作,获取调节操作在显示区域

中指示的第二子控件集合。

[0077]其中,如前所述,目标控件的显示区域显示的子控件不是固定不变的,用户可以通

过在显示区域中执行调节操作来改变显示区域中显示的子控件,以对其他子控件进行浏览

或查找。

[0078]当接收到用户在显示区域中输入的调节操作时,对该调节操作导致的显示区域的

显示变化进行计算,获取到该调节操作在显示区域中指示的第二子控件集合,即计算得出

调节操作之后显示区域应当显示的子控件组成的集合。

[0079]在一些实施例中,响应于对显示区域中的显示内容的调节操作,获取调节操作在

显示区域中指示的第二子控件集合,包括:

[0080]1、响应于显示区域中接收到的滚动操作,获取滚动操作造成目标控件相对显示区

域的位移;

[0081]2、根据位移确定目标控件在经过滚动操作后与显示区域中对应的第二子控件集

合。

[0082]其中,在本申请实施例中,可以通过滚动显示区域的内容来实现对显示区域中显

示内容的调节操作。具体地,可以对显示在显示区域中的滚动条进行拖动来实现显示区域

内容的滚动;也可以通过上下滑动屏幕来实现显示区域内容的滚动;还可以通过屏前手势

10

CN115525196A说明书7/17页

检测的方式实现显示区域内容的滚动。具体地,屏前手势检测方法可以通过终端采集到用

户的手势信息,根据手势信息确定上翻或下翻的指令,然后根据该指令对显示区域的显示

内容进行滚动。

[0083]滚动操作的详细信息,可以通过获取滚动操作的位移数据来确定。具体地,可以获

取滚动操作造成目标控件相对显示区域的位移,其中,位移包括了距离和方向信息。例如当

滚动操作为向下滚动时,目标控件相对显示区域则会向上移动。然后移动的距离可以根据

滚动的距离来确定,进一步可以根据移动的距离确定上方应当隐藏的子控件的数量以及下

方应当显示的子控件的数量。即可以计算得出滚动操作之后显示区域中应当显示的子控件

的信息,滚动操作后的显示区域中应当显示的子控件的信息构成了第二子控件集合。

[0084]在一些实施例中,根据位移确定目标控件在经过滚动操作后与显示区域中对应的

第二子控件集合,包括:

[0085]2.1、获取第一子控件集合中包含的子控件的第一标签范围;

[0086]2.2、获取目标控件当前状态下所有子控件的高度信息;

[0087]2.3、根据第一标签范围、位移以及所有子控件的高度信息确定滚动操作后显示区

域中包含的子控件的第二标签范围;

[0088]2.4、根据第二标签范围确定第二子控件集合。

[0089]其中,在本申请实施例中,在确定状态下,可以对目标控件的每个子控件建立标

签o例如,请继续参阅图1A,可以为标签1建立标签001、为控件2建立标签002、为控件3建立

标签003、为控件4建立标签004、为控件41建立标签005、为控件42建立标签006、为控件43建

立标签007、为控件44建立标签008、为控件45建立标签009、为控件46建立标签010、为控件

47建立标签011、为控件5建立标签012、为控件6建立标签013、为控件7建立标签014以及为

控件8建立标签015。如此,可以确定滚动操作前显示区域中包含的第一子控件集合中的子

控件对应的第一标签范围为003至012o

[0090]然后,可以进一步获取目标控件在当前状态下所有子控件的高度信息。其中,所有

子控件的高度可以相同,例如均为一个单位高度,该单位高度可以是0.5cm、lcm或者用户自

行设定的一个高度。如图1A中示出,所有子控件的高度相同。子控件的高度也可以不同,如

图3A所示,为本申请提供的节点处理方法的又一场景示意图,如图所示,控件A、控件B以及E

的高度为两个单位高度,控件B1、控件B2等控件的高度则为一个单位高度。可以理解的是,

图3A也只是一个示例,用户可以根据自身需要设定不同控件的高度。例如设定为1.5个单位

高度、3个单位高度等。

[0091]当确定了位移为向上移动两个单位高度的距离时,则可以进一步根据位移、所有

子控件的高度信息以及第一标签范围计算得到滚动操作之后显示区域中包含的子控件对

应的第二标签范围。仍以图1A所示场景为例进行说明,由于位移为向上移动2个单位高度距

离,而每个子控件的高度均为一个单位高度,那么标签范围就应当向后顺移2个,即第二标

签范围应当为005至014。最后再根据第二标签范围确定该标签范围中的标签对应的子控

件,得到第二子控件集合。

[0092]在一些实施例中,响应于对显示区域中的显示内容的调节操作,获取调节操作在

显示区域中指示的第二子控件集合,包括:

[0093]A、响应于针对显示区域中目标子控件的展开操作,获取目标子控件包含的次级子

11

CN115525196A说明书8/17页

控件信息;

[0094]B、根据次级子控件信息确定在展开操作后目标控件与显示区域对应的第二子控

件集合。

[0095]在本申请实施例中,可以通过点击未展开的树形控件来实现对显示区域中的显示

内容的调节操作。具体地,如图3B所示,为本申请提供的节点处理方法的又一场景示意图,

如图所示,树形控件B的子控件控件B1还包括其下一级的子控件:控件B11和控件B12。当用

户点击显示在显示区域中的子控件B1时,触发展开显示子控件B1的下一级子控件。响应于

对该子控件的展开操作,可以先获取该子控件包含的次级子控件信息。此处次级子控件信

息为该子控件的下一级子控件的信息,例如B1子控件的下一级子控件为控件B11和控件

B12,在展开后的状态下,控件B11和控件B12也是目标控件的子控件。此处次级子控件信息

包括次级子控件的数量以及每个次级子控件的高度信息。

[0096]然后,在确定了次级子控件的数量以及每个次级子控件的高度信息后,可以计算

该子控件下方其他子控件需要移动的距离。然后再根据该移动距离确定展开操作后显示区

域应当包含的第二子控件集合。

[0097]在一些实施例中,还可以响应于对目标子控件的收起操作实现对显示区域显示的

内容的调节。与展开操作相同,响应于收起操作的触发指令,也需要获取该子控件包含的次

级子控件的信息,然后根据次级子控件的数量与高度信息重新确定收起操作之后显示界面

应当包括的第二子控件集合。

[0098]步骤104,确定第一子控件集合和第二子控件集合的交集。

[0099]其中,如前所述,第一子控件集合为调节操作前显示区域中包含的子控件组成的

集合,第二子控件集合为调节操作后显示区域中包含的子控件组成的集合。由于在本申请

中,仅对显示在显示区域中的子控件创建节点并加载其节点进行显示,对于不显示在显示

区域中的子控件,则不创建节点以及进行节点加载。因此,对于调节操作导致由显示转变为

隐藏的子控件,需要对其对应的节点进行回收;而对于调节操作导致由隐藏转变为显示的

子控件,需要对其创建节点并进行加载以进行显示。

[0100]在本申请中,先确定第一子控件集合和第二子控件集合的交集,然后再进一步根

据该交集分别确定调节操作导致由显示转变为隐藏的子控件以及调节操作导致由隐藏转

变为显示的子控件。

[0W1]其中,在一些情况下,例如调节操作为滚动操作时,当滚动距离较大时,上述交集

可能为空集,即滚动前显示在显示区域中的子控件全部因滚动操作而隐藏了。

[0102]步骤105,将第一子控件集合中不属于交集的子控件对应的节点存储至节点池中。

[0W3]其中,由于交集中的子控件为调节操作之后仍显示在显示区域中的子控件,因此

第一子控件集合中不属于交集的子控件即为调节操作后由显示转变为隐藏的子控件。在本

申请实施例中,为进一步提高调节操作之后新显示在显示区域中的子控件对应的节点的创

建效率,可以设置节点池进行节点的回收和复用。具体地,节点池可以为在计算机设备的缓

存中设置的一个存储空间,然后可以将调节操作后由显示转变为隐藏的子控件对应的节点

存储至节点池中,实现对这些节点的回收。如此当需要为其他控件创建新的节点时,可以使

用回收的节点进行复用,如此则可以提高新节点的生成效率。

[0104]步骤106,通过更新后的节点池中的节点生成第二子控件集合中不属于交集的子

12

CN115525196A说明书9/17页

控件。

[0105]其中,第二子控件集合为调节操作之后显示区域中应当显示的子控件的集合,那

么第二子控件集合中不属于交集的子控件即为调节操作后由隐藏转变为显示的子控件。在

本申请实施例中,无需重新创建新的节点,可以从节点池中调用节点,然后根据节点池中调

用的节点生成显示区域中新显示的子控件对应的节点。其中,此处节点池为将前述调节操

作后由显示转变为隐藏的子控件对应的节点回收至节点池之后更新得到的节点池。即每次

有节点回收至节点池中或者有节点被复用抑或有新的节点生成后,都会对节点池进行一次

更新操作。

[0106]在一些实施例中,通过更新后的节点池中的节点生成第二子控件集合中不属于交

集的子控件,包括:

[0W7]1、确定第二子控件集合中不属于交集的子控件集合为第三子控件集合,并确定第

三子控件集合中包含元素的目标数量;

[0108]2、从更新后的节点池中获取目标数量个节点;

[0109]3、根据目标数量个节点生成第三子控件集合中的子控件。

[01W]其中,在将第一子控件集合中不属于交集中的子控件对应的节点存储至节点池中

之后。可以先计算第二子控件集合中不属于交集的子控件集合中子控件的数量,即先确定

调节操作导致需要从隐藏转变为显示的子控件的数量。例如在图1A所示的场景中,当滚动

操作为向下滚动3个单位高度距离时,会有3个控件:控件6、控件7和控件8,由隐藏状态转变

为显示在显示区域中的状态。即确定第三子控件集合中包含元素的目标数量为3。

[01111此时可以从更新后的节点池中获取相应数量个节点,然后根据该相应数量个节点

生成第三子控件集合中的子控件。如前示例,可以从更新后的节点池中获取3个节点,再根

据这3个节点生成三个子控件,即前述控件6、控件7以及控件8。

[0112]在一些实施例中,根据目标数量个节点生成第三子控件集合中的子控件,包括:

[0113]3.1、对目标数量个节点进行初始化,得到目标数量个初始化后的节点;

[0114]3.2、对目标数量个初始化后的节点进行渲染,生成第三子控件集合中的子控件。

[0115]其中,由于回收至节点池中的节点中包含了原子控件的相关信息,因此在复用更

新后的节点池中的节点以生成新的子控件对应的节点时,需要先对节点池中取出的节点进

行初始化操作。初始化操作保留了节点的框架相关的数据,包括节点的形状、尺寸、颜色等

数据,而删除了节点中与原控件相关的信息,如控件名称等,得到多个初始化后的节点,这

些初始化后的节点也可以称为模板节点。

[0116]然后,再根据需要进行显示的子控件的信息对这些初始化后得到的模板节点进行

渲染,得到需要进行显示的子控件对应的多个节点。

[0117]在一些实施例中,从更新后的节点池中获取目标数量个节点,包括:

[0118]A、确定第三子控件集合中每个子控件的节点类型;

[0119]B、从更新后的节点池中逐一获取与每个子控件的节点类型对应的节点,得到目标

数量个节点。

[0120]其中,在本申请实施例中,会存在不同的控件所对应的节点的类型不同的情况。例

如在图3A所示的场景中,控件B和控件B1的节点所对应的节点类型就不相同,具体地,控件B

的高度与控件B1的高度不相同。如此,如果将控件B的节点回收至回收池中,复用该节点也

13

CN115525196A说明书10/17页

无法生成控件Bl对应的节点。而且,在一些情况下,也可能存在子控件颜色不同的情况,不

同颜色的子控件对应的节点类型也不相同,在实际应用中需要属于同一类型的节点才可以

进行复用。

[0121]如此,在确定了第三子控件集合后,对第三子控件集合中每个子控件的节点类型

进行获取,得到每个子控件对应的节点类型。然后,再逐一从节点池中提取与节点类型对应

的节点进行复用。

[0122]在一些实施例中,从更新后的节点池中获取目标数量个节点,包括:

[0123]a、当检测到更新后的节点池中的节点的数量不小于目标数量时,从更新后的节点

池中获取目标数量个节点;

[0124]b、当检测到更新后的节点池中的节点的数量小于目标数量时,在更新后的节点池

中创建新节点,直至节点池中节点数量达到目标数量,以及从节点池中获取目标数量个节

点。

[0125]其中,在本申请实施例中,也可能存在节点池中的节点不够复用的情况。例如当回

收的节点的数量小于需要生成的节点数量时,便会造成前述节点不够复用的情况。具体地,

例如回收了一个A类节点和两个B类节点后,其中A类节点的高度为B类节点高度的2倍,需要

重新生成4个B类节点。那么此时B类节点的数量便会不足。此时便需要重新生成2个B类节

点,以保证能够生成对应数量的新的节点。

[0126]在一些实施例中,在设置节点池时,可以先对目标控件的显示区域中显示的所有

可能情况进行预测,再根据预测结果设置节点池。例如假设一共有A、B以及C三种类型的节

点,如果显示区域全部显示A节点对应的子控件,可以计算出所需要的A类节点的数量a;如

果显示区域全部显示B节点对应的子控件,可以计算出所需要的B类节点的数量b;如果显示

区域全部显示C节点对应的子控件,可以计算出所需要的C类节点的数量c。如此,可以在节

点池中设置a个A类节点、b个B类节点以及c个C类节点。如此可以避免出现上述节点不够复

用的情况,由于节点不够复用时需要重新生成节点,需要耗费时间。因此按照前述方法提前

设置节点池可以提升节点复用效率。由于显示区域控件有限,因此前述数量a、b以及c的值

也不会过大,如此则避免了目前对所有子控件生成节点导致的内存消耗过大,提升了系统

的运行效率。

[0127]根据上述描述可知,本申请实施例提供的节点处理方法,通过获取目标控件的显

示区域,目标控件包括至少一个树形控件或列表控件;确定显示区域中包含的第一子控件

集合;响应于对显示区域中的显示内容的调节操作,获取调节操作在显示区域中指示的第

二子控件集合;确定第一子控件集合和第二子控件集合的交集;将第一子控件集合中不属

于交集的子控件对应的节点存储至节点池中;通过更新后的节点池中的节点生成第二子控

件集合中不属于交集的子控件。以此,通过设置节点池,将调节操作导致无需在显示区域进

行显示的子控件对应的节点回收至节点池,并从节点池中调用节点生成调节操作触发需要

在显示区域进行显示的子控件。如此只需维护有限数量的节点,大大减少了所需节点的数

量,减少了内存消耗,提升了系统运行效率。

[0128]相应地,本申请实施例将从计算机设备的角度进一步对本申请提供的节点处理方

法进行详细的描述,其中计算机设备可以为终端。如图4所示,为本申请提供的节点处理方

法的另一流程示意图,该方法包括:

14

CN115525196A说明书11/17页

[0129]步骤201,计算机设备获取目标控件的显示区域。

[0130]其中,目标控件包括至少一个树形控件或列表控件。具体地,目标控件可以为文件

管理场景下的控件,也可以为即时通讯客户端中显示通讯录或者通话列表的控件。在本申

请实施例中,将以目标控件为即时通讯客户端中显示通讯录的控件为例进行详细介绍。此

处即时通讯客户端可以为企业微信客户端。

[0131]在即时通讯客户端的通讯录界面上以目标控件的形式显示当前客户端对应的通

讯录数据,由于即时通讯客户端的通讯录界面空间有限,只能显示通讯录数据中的部分数

据。其他未能显示的数据便予以隐藏,用户可以通过滚动界面的方式显示隐藏的数据。

[0132]目前,在显示通讯录时,会对所有联系人控件或者联系人群组控件都建立一个节

点,并对所有节点进行加载。如此,当联系人数量不断增加时,建立节点以及记载节点所消

耗的内存便会大大增加,当内存占用过多时,会导致即时通讯客户端的运行效率下降。为解

决上述问题,本申请提出一种节点处理方法,仅对显示在即时通讯客户端的显示界面中的

控件建立其对应的节点并进行加载,对不显示在即时通讯客户端的显示界面中的控件不建

立其对应的控件,从而降低内存消耗,提升即时通讯客户端运行效率。

[0133]具体地,在本申请实施例中,终端会先对显示区域进行获取,以便进一步对显示区

域中显示的子控件进行确定。以及在用户在对通讯录进行浏览或者查找的过程中,实时确

定浏览操作或者查找操作造成的显示区域显示的子控件的变化。

[0134]终端对显示区域进行获取,具体为获取当前显示区域与目标控件中各个子节点之

间的位置关系。具体地,在即时通讯客户端的通讯录界面显示目标控件之前,终端已经可以

通过通讯录数据对每个控件建立其相应的标签。具体示例请参阅图3B,可以对控件A建立标

签000,控件B建立标签001,控件B1建立标签0010,控件B11建立标签00100,控件B12建立标

签00101,控件B2建立标签0011,控件B3建立标签0012,控件B4建立标签0013,控件B5建立标

签0014,控件B6建立标签0015,控件B7建立标签0016,控件C建立标签002,控件D建立标签

003以及控件E建立标签004。获取目标控件的显示区域,为获取目标控件在当前状态下的显

示区域中第一个控件和最后一个控件的标签,例如图3B中显示区域11中第一个控件标签为

001,最后一个控件标签为0015。其中图3B只是一个示例,在实际应用时目标控件中的子控

件的数量远多于示例的数量,然而仍可以按照示例的方式进行标签的建立以及显示区域的

获取。

[0135]步骤202,计算机设备确定显示区域中包含的第一子控件集合。

[0136]其中,在根据步骤201中的方法对目标控件中所有控件建立标签并且确定了目标

控件当前的状态后,可以根据显示区域中包含的子控件标签信息确定显示区域中包含的第

一子控件集合。

[0137]其中,目标控件的状态,是由目标控件中包含的树形控件的展开或收起的状态来

定义的。树形控件以及树形控件中任一层级的子控件,在处于不同的状态(展开或收起)时,

目标控件的状态也不同。然而在任意一个确定的时刻,目标控件的状态都是唯一确定的。在

确定状态下,终端可以根据显示区域的位置确定显示区域中包含的子控件的信息,得到第

一子控件集合。

[0138]步骤203,响应于对显示区域中的显示内容的滚动操作,计算机设备计算滚动操作

之后应当在显示区域中显示的第二子控件集合。

15

CN115525196A说明书12/17页

[0139]其中,步骤202中获取到的第一子控件集合为滚动操作之前显示区域中包含的子

控件组成的集合。滚动操作导致的显示区域中显示的子控件的变化,可以根据滚动操作导

致目标控件相对显示区域的位移以及每个子控件的尺寸信息计算得到。

[0140]具体地,先获取滚动操作导致目标控件相对显示区域的移动方向以及移动距离,

然后,根据移动距离以及每个子控件的高度计算出移动的子控件的数量。最后根据前述建

立的每个子控件的标签信息确定滚动操作之后显示区域中每个子控件对应的标签信息,进

而可以确定滚动操作之后显示区域中应当显示的第二子控件集合。

[0141]步骤204,计算机设备确定第一子控件集合和第二子控件集合的交集。

[0142]其中,在确定了滚动操作之前显示区域中包含的第一子控件集合以及滚动操作之

后显示区域中应当显示的第二子控件集合后,终端进一步确定第一子控件集合与第二子控

件集合的交集。该交集中的元素为在滚动前后均处于显示区域中的子控件。当然,该交集也

可能为空集。

[0143]步骤205,计算机设备将第一子控件集合中不属于交集的子控件对应的节点存储

至节点池中。

[0144]其中,在确定了第一子控件集合和第二子控件集合的交集后,便可以确定第一子

控件集合中不属于交集的子控件为滚动操作导致隐藏的子控件。对于这些子控件,计算机

设备将其回收至预设的节点池中。

[0145]步骤206,计算机设备确定第二子控件集合中不属于交集的子控件组成的第三子

控件集合。

[0146]其中,在确定了第一子控件集合和第二子控件集合的交集后,便可以确定第二子

控件集合中不属于交集的子控件为需要从隐藏状态转变为显示状态的子控件,这些子控件

构成了第三子控件集合。此处隐藏状态并非表示该子控件被遮蔽,只是示意该子控件原本

为不可见的子控件,经过滚动操作后,该子控件应当显示在显示区域中。然后,可以进一步

确定第三子控件集合中元素的目标数量。

[0147]步骤207,计算机设备从节点池中提取目标数量个节点以生成第三子控件集合中

的子控件。

[0148]其中,在确定了需要在显示区域新增显示的目标数量个子控件后。可以从节点池

中提取目标数量个节点,对这些节点进行初始化,然后再进一步渲染得到需要新增显示的

目标数量个子控件。

[0149]步骤208,计算机设备将第三子控件集合中的子控件在显示区域予以显示。

[0150]其中,在确定了应当由显示状态转变为隐藏状态的子控件以及应当由隐藏状态转

变为显示状态的子控件后。计算机设备在即时通讯客户端的通讯录显示界面中按照上述滚

动操作对当前显示区域显示的子控件进行滚动处理,将上述应当由显示状态转变为隐藏状

态的子控件删除,并新增显示应当由隐藏状态转变为显示状态的子控件。当滚动操作为向

下滚动时,新增显示的子控件应当显示在显示区域的下方;当滚动操作为向上滚动时新增

显示的子控件应当显示在显示区域的上方。子控件的显示顺序可以按照前述建立标签的顺

序进行显示。

[0151]根据上述描述可知,本申请实施例提供的节点处理方法,通过获取目标控件的显

示区域,目标控件包括至少一个树形控件或列表控件;确定显示区域中包含的第一子控件

16

CN115525196A说明书13/17页

集合;响应于对显示区域中的显示内容的调节操作,获取调节操作在显示区域中指示的第

二子控件集合;确定第一子控件集合和第二子控件集合的交集;将第一子控件集合中不属

于交集的子控件对应的节点存储至节点池中;通过更新后的节点池中的节点生成第二

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论