System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本公开的实施方式涉及计算机,更具体地,本公开的实施方式涉及视图过度绘制检测方法、视图过度绘制检测装置、计算机可读介质及电子设备。
技术介绍
1、本部分旨在为权利要求中陈述的本公开的实施方式提供背景或上下文,此处的描述不因为包括在本部分中就承认是现有技术。
2、控件视图为app(application,应用程序)的页面中所包含的视觉展示元素,每个页面中通常可以包括多个控件视图。在页面显示的过程中,需要对控件视图进行绘制,以使其呈现符合定义的展示效果。当控件视图之间存在覆盖关系时,被共同覆盖的区域只有最顶层可见,但是下层在同一帧依旧会被绘制,从而导致出现过度绘制(overdraw)的问题。过度绘制会额外占用硬件资源,甚至造成app运行卡顿,影响页面加载效率和呈现效果。
3、目前,可以通过开启调试gpu过度绘制的功能以显示页面中存在过度绘制的区域,但是仅仅显示存在过度绘制的区域所提供的信息量不足,后续分析、优化时需要更深入且精细的排查工作,耗时长且效率低。
技术实现思路
1、在本上下文中,本公开的实施方式期望提供一种视图过度绘制检测方法、视图过度绘制检测装置、计算机可读介质及电子设备。
2、根据本公开实施方式的第一方面,提供一种视图过度绘制检测方法,该方法可以包括:在页面上监听到控件视图发生可见性变化时,获取所述页面中的根视图;基于所述根视图在所述页面中搜索对应分支的子视图,并将所述根视图与所述子视图作为原始控件视图加入控件集合;在所述控件集合中,以处
3、可选地,所述在页面上监听到控件视图发生可见性变化时,获取所述页面中的根视图,包括:在页面上监听到控件视图发生可见性变化时,等待预设加载时长;在所述预设加载时长内所述页面上未发生控件视图的可见性变化时,获取所述页面中的根视图。
4、可选地,所述在所述控件集合中,以处于未使用状态的所述原始控件视图为基准控件,与处于未使用状态的其他每一所述原始控件视图进行碰撞检测,以及与不包含所述基准控件的每一交集控件视图进行碰撞检测,并在所述碰撞检测的过程结束后将所述基准控件设置为已使用状态之前,所述方法还包括:对所述控件集合中的所述原始控件视图基于剪枝条件进行过滤;所述剪枝条件基于所述原始控件视图的绘制内容所覆盖的区域设置。
5、可选地,所述剪枝条件包括以下至少一种:
6、过滤无绘制内容的所述原始控件视图;
7、过滤有绘制内容,且绘制内容所覆盖的区域小于或等于第一预设区域大小的所述原始控件视图。
8、可选地,所述剪枝条件包括:
9、过滤有绘制内容,且绘制内容所覆盖的区域大于或等于第二预设区域大小的所述原始控件视图;
10、以及,所述确定组合视图数量大于或等于过度数量阈值的所述交集控件视图为过度绘制之前,还包括:在所述控件集合中所述原始控件视图均处于已使用状态时,将有绘制内容,且绘制内容所覆盖的区域大于或等于第二预设区域大小的所述原始控件视图与所述控件集合中的每一所述原始控件视图或所述交集控件视图进行组合,以在所述控件集合中形成新增的交集控件视图。
11、可选地,所述确定组合视图数量大于或等于过度数量阈值的所述交集控件视图为过度绘制之后,还包括:在确定过度绘制的所述交集控件视图存在忽略标记的情况下,基于所述忽略标记进行过滤;所述忽略标记指示对所述交集控件视图的过度绘制不作处理。
12、可选地,所述确定组合视图数量大于或等于过度数量阈值的所述交集控件视图为过度绘制之后,还包括:在确定过度绘制的所述交集控件视图中,分别获取每一所述原始控件视图的原始视图快照;基于所述原始视图快照组合所述交集控件视图对应的交集视图快照;将所述交集视图快照写入环形缓冲池中。
13、可选地,所述将所述交集视图快照写入环形缓冲池中之后,还包括:响应于对所述环形缓冲池中所述交集视图快照的可视化请求,基于所述交集视图快照中所述原始视图快照之间的层级关系进行可视化层级展示。
14、可选地,所述基于所述交集视图快照中所述原始视图快照之间的层级关系进行可视化层级展示,之后还包括:响应于对所述交集视图快照中所述原始视图快照的选择操作,展示所述原始视图快照的代码信息。
15、可选地,所述基于所述交集视图快照中所述原始视图快照之间的层级关系进行可视化层级展示,之后还包括:响应于对所述交集视图快照的忽略操作,对所述交集视图快照对应的所述交集控件视图设置忽略标记;所述忽略操作用于指示对所述交集视图快照对应交集控件视图的过度绘制不作处理。
16、可选地,所述方法应用于客户端,所述对所述交集视图快照对应的所述交集控件视图设置忽略标记之后,所述方法还包括:将存在所述忽略标记的所述交集控件视图向服务端同步;所述服务端用于存储至少一个客户端提供的存在所述忽略标记的所述交集控件视图,并在任一客户端确定过度绘制的所述交集控件视图时,向所述任一客户端提供存在所述忽略标记的所述交集控件视图。
17、可选地,所述确定组合视图数量大于或等于过度数量阈值的所述交集控件视图为过度绘制之后,还包括:在确定过度绘制的所述交集控件视图中,对至少一个所述交集控件视图进行分析,并基于分析提供对应的修改建议;所述修改建议包括移除背景、减少层级和自定义绘制区域中的至少一种。
18、根据本公开实施方式的第二方面,提供一种视图过度绘制检测装置,该装置可以包括:控件视图采集模块,用于在页面上监听到控件视图发生可见性变化时,获取所述页面中的根视图;所述控件视图采集模块,还用于基于所述根视图在所述页面中搜索对应分支的子视图,并将所述根视图与所述子视图作为原始控件视图加入控件集合;视图碰撞检测模块,用于在所述控件集合中,以处于未使用状态的所述原始控件视图为基准控件,与处于未使用状态的其他每一所述原始控件视图进行碰撞检测,以及与不包含所述基准控件的每一交集控件视图进行碰撞检测,并在所述碰撞检测的过程结束后将所述基准控件设置为已使用状态;其中,将所述基准控件与所述碰撞检测过程中产生交集的其他所述原始控件视图或所述交集控件视图进行组合,以在所述控件集合中形成新增的交集控件视图;过度绘制提取模块,用于在所述控件集合中所述原始控件视图均处于已使用状态时,确定组合视图数量大于或等于过度数量阈值的所述交集控件视图为过度绘制。
19、可选地,所述控件视图采集模块,具体用于在页面上监听到控件视图发生本文档来自技高网...
【技术保护点】
1.一种视图过度绘制检测方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述在页面上监听到控件视图发生可见性变化时,获取所述页面中的根视图,包括:
3.根据权利要求1所述的方法,其特征在于,所述在所述控件集合中,以处于未使用状态的所述原始控件视图为基准控件,与处于未使用状态的其他每一所述原始控件视图进行碰撞检测,以及与不包含所述基准控件的每一交集控件视图进行碰撞检测,并在所述碰撞检测的过程结束后将所述基准控件设置为已使用状态之前,所述方法还包括:
4.根据权利要求3所述的方法,其特征在于,所述剪枝条件包括以下至少一种:
5.根据权利要求3所述的方法,其特征在于,所述剪枝条件包括:
6.根据权利要求1所述的方法,其特征在于,所述确定组合视图数量大于或等于过度数量阈值的所述交集控件视图为过度绘制之后,还包括:
7.根据权利要求1所述的方法,其特征在于,所述确定组合视图数量大于或等于过度数量阈值的所述交集控件视图为过度绘制之后,还包括:
8.一种视图过度绘制检测装置,其特征在
9.一种计算机可读介质,所述计算机可读介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现根据权利要求1至7任一项所述的视图过度绘制检测方法。
10.一种电子设备,其特征在于,包括:
...【技术特征摘要】
1.一种视图过度绘制检测方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述在页面上监听到控件视图发生可见性变化时,获取所述页面中的根视图,包括:
3.根据权利要求1所述的方法,其特征在于,所述在所述控件集合中,以处于未使用状态的所述原始控件视图为基准控件,与处于未使用状态的其他每一所述原始控件视图进行碰撞检测,以及与不包含所述基准控件的每一交集控件视图进行碰撞检测,并在所述碰撞检测的过程结束后将所述基准控件设置为已使用状态之前,所述方法还包括:
4.根据权利要求3所述的方法,其特征在于,所述剪枝条件包括以下至少一种:
5.根据权利要求...
【专利技术属性】
技术研发人员:张颖,李学勇,裘国庆,曾少彬,王维恒,陈锦海,
申请(专利权)人:杭州网易云音乐科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。