Hierarchy Viewer可以用来查看View的布局层次,并检测布局渲染的性能瓶颈
一.设置环境变量
如果是Android4.1以上的设备,需要设置一个环境变量,设置步骤如下:
Mac:
1.vim ~/.bash_profile
2.添加
#Hierarchy Viewer Variable
export ANDROID_HVPROTO=ddm
3.source ~/.bash_profile
二:运行代码,并打开Android Device Monitor,确保左上进程列表中显示你的应用(你的应用package名)
三:通过菜单:Window > Open Perspective >Hierarchy View打开Hierarchy View面板
四:找到你的应用进程,双击,到此会显示你的布局层次树
五:点击其中一个View节点,你会看到View的相关信息
六:左方是View对应属性,选择Profile Node则可以显示View的Measure、Layout、Draw时间
可以看到,ViewTree中,每一个View有三个有颜色的小圆圈,他们分别代表measure, layout, and draw相对于其他View的速度(从左到右) ,而颜色的含义如下:
绿色:此View的渲染速度比其他一半的View都快
黄色:此View的渲染速度在效率高的50%之下
红色:最慢的一些View,适合去做优化
七:其他有用的信息:
1.Hierarchy Viewer测量的是相对的效率,所以总会有显示红色的View,但这不代表它在使用的时候就很慢
2.你应该多Profile几次,获取一个平均的测量值
3.看一下红圈的叶子节点View,或者只有几个View但显示红圈的ViewGroup,他们在手机上的执行速度不一定很慢,但你应该了解下他们为什么显示红圈,参考systrace(
https://developer.android.com/tools/performance/systrace/index.html)及traceview (
https://developer.android.com/tools/performance/traceview/index.html)
4.如果有20+以上的叶子节点都显示红色的draw,那你应该看一下这些View的OnDraw方法是不是执行了一些不该在这执行的代码