[发明专利]一种用户界面绘制层级、过度绘制的检测方法及装置有效
申请号: | 201910143733.3 | 申请日: | 2019-02-25 |
公开(公告)号: | CN111611032B | 公开(公告)日: | 2023-05-26 |
发明(设计)人: | 王玉鹏 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F9/451 | 分类号: | G06F9/451;G06F8/38 |
代理公司: | 北京思格颂知识产权代理有限公司 11635 | 代理人: | 杨超 |
地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 用户界面 绘制 层级 过度 检测 方法 装置 | ||
本发明公开了一种用户界面绘制层级、过度绘制的检测方法及装置。其中,用户界面绘制层级的检测方法包括:在用户界面的刷新过程中,获取所述用户界面的顶层视图的控件树;所述控件树包括所述视图的控件;确定所述控件树的层级数量作为所述用户界面的绘制层级。能够自动检测绘制层级,节省了人力成本,提高了检测效率和准确度;可以更好的帮助研发人员发现问题,最终提高应用的用户体验度。
技术领域
本发明涉及应用检测技术领域,特别涉及一种用户界面绘制层级、过度绘制的检测方法及装置。
背景技术
操作系统,例如安卓系统的应用程序(Application,APP)中常常会存在用户界面(User Interface,UI)的过度绘制。过度绘制是指屏幕上的某个像素区域在同一帧的时间内被绘制了多次。手机为了保持视觉的流畅度,其屏幕刷新频率通常设为60hz,即在1000/60=16.67ms内更新一帧,过度绘制因为浪费了大量的CPU以及GPU资源,使得有时UI无法在设定频率内更新到下一帧而发生掉帧,造成UI卡顿。
现有技术中,安卓提供了UI过度绘制的检测工具,在手机的开发者模式中,打开“调试GPU过度绘制”,选择其中的“显示GPU过度绘制区域”,开启后系统会在不同渲染复杂度的元素上渲染上不同的颜色,具体是:一层过度绘制的显示为蓝色,二层过度绘制的显示为绿色,三层过度绘制的显示为淡红色,四层过度绘制的显示为深红色。然后开发者可以对手机屏幕做截图,并对截图做分析,肉眼查看截图中渲染为红色的区域的面积大小及红色的渲染程度,判断过度绘制的程度,决定是否需要调整原代码。
上述技术方案通过人工肉眼观察的方法来判断费时费力,且人工主观判断容易出现错误,尤其是在检测人员视觉疲惫的情况下。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种用户界面绘制层级、过度绘制的检测方法及装置。
第一方面,本发明实施例提供一种用户界面绘制层级的检测方法,包括:
在用户界面的刷新过程中,获取所述用户界面的顶层视图的控件树,所述控件树包括所述视图的控件;
确定所述控件树的层级数量作为所述用户界面的绘制层级。
在一些可选的实施例中,确定所述控件树的层级数量,包括:
按照预设的算法遍历所述控件树,每获取到一级控件,所述控件树的层级数量增加1,并继续获取下一级控件,直至获取不到下一级控件。
在一些可选的实施例中,在用户界面的刷新过程中,获取所述用户界面的顶层视图的控件树,包括:
在用户界面的刷新过程中,通过预先插入的探针获取所述用户界面的顶层视图的控件树,所述探针为用于获取控件树的执行代码。
在一些可选的实施例中,所述探针通过下述方式预先插入:
在对应用程序的源码编译过程中,遍历所述源码搜索出所有的Activity的子类,每个所述子类对应一个用户界面;
在所述子类的顶层视图源码的刷新方法部分插入探针。
在一些可选的实施例中,在所述子类的顶层视图源码的刷新方法部分插入探针前,还包括:
获取所述子类的顶层视图的标识;
若获取失败,按照设定的规则在所述源码中设置所述视图的标识,再执行所述在所述子类的顶层视图源码的刷新方法部分插入探针;
若获取成功,查找预先建立的免检视图列表中是否有所述视图的标识;若否,再执行所述在所述子类的顶层视图源码的刷新方法部分插入探针。
在一些可选的实施例中,获取所述子类的顶层视图的标识,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910143733.3/2.html,转载请声明来源钻瓜专利网。