Hierarchy View是Android Device Monitor中内置的工具,可以检查布局层次结构中每个视图的属性和布局速度。它可以帮助您查找由视图层次结构导致的性能瓶颈,从而帮助您简化层次结构并减少过度绘制的问题。
使用前的设置
使用Hierarchy View 之前需要打开android 设备上的View Server
检查是否打开了View Service命令: adb shell service call window 3
若返回值是:Result: Parcel(00000000 00000000 '........') 说明View Server处于关闭状态。
若返回值是:Result: Parcel(00000000 00000001 '........') 说明View Server处于开启状态。
如果是一台可以打开View Service Android设备(Android开发版手机,模拟器)可以用以下命令操作View Server
打开View Server命令:
adb shell service call window 1 i32 4939
关闭View Server命令:
adb shell service call window 2 i32 4939
注意:您的设备必须运行Android 4.1或更高版本。
开始使用Hierarchy View
- 图1. Hierarchy View
1、将设备连接到电脑,打开USB调试。
2、在Android Studio中打开你的项目,在你的设备上构建并运行它。
3、点击工具栏上的tools> Android> Android DeviceMonitor。Android Studio会显示一个DDMS的对话框,然后单击右上角的Hierarchy View按钮进入Hierarchy View工具界面。
熟悉这些工具
- 图2.Hierarchy View工具栏
层次查看器提供以下窗格(如图2所示):
- <b>Tree View(中心):</b>显示视图层次结构。您可以使用鼠标拖动并放大,底部的缩放控件。每个节点表示它的View类名和ID名称。
- <b>Tree Overview(右上):</b>为您的应用程序的完整视图层次结构提供鸟瞰图。移动灰色矩形以更改树视图中可见的视口。
- <b>Layout View(右下角):</b>显示布局的线框视图。当前所选视图的轮廓为红色,其父视图为浅红色。
如果您导航到其他应用程序,则必须从左窗格中的Windows选项中选择该应用程序以查看其视图层次结构。
要查看有关视图的详细信息,包括测量,布局和绘制时间(如图3所示),请单击树视图中的视图。双击视图以查看其放大图像。
- 图3.视图节点的部分显示。
关于三个小圆点的性能指示, 重点介绍一下:
三个小圆点, 依次表示Measure, Layout, Draw, 可以理解为对应View的onMeasure, onLayout, onDraw三个方法。
绿色, 表示该View的此项性能比该View Tree中超过50%的View都要快。
黄色, 表示该View的此项性能比该View Tree中超过50%的View都要慢。
红色, 表示该View的此项性能是View Tree中最慢的
如果你的界面的Tree View中红点较多, 那就需要注意了。 一般来说:
Measure红点, 可能是布局中嵌套RelativeLayout, 或是嵌套
LinearLayout都使用了weight属性
Layout红点, 可能是布局层级太深。
Draw红点, 可能是自定义View的绘制有问题, 复杂计算等。
要查看视图的属性,请单击左窗格中的“ View Properties ”选项卡。
解释结果
Hierarchy View测量每个节点相对于兄弟视图的性能,所以在配置文件中总是有红色节点 - 除非所有视图都执行相同 - 并不一定意味着红色表现不佳(只是它是的视图在本组视图中是相对最慢的)。
Hierarchy View将您的布局光栅化(rasterization)以获取时序信息。栅格化是采取高级对象(如圆形或矢量字体)并将其转换为屏幕上的像素的过程。通常,光栅化由设备上的GPU完成,但在软件光栅化的情况下,渲染是通过普通软件在CPU上完成的。这意味着报告的时序相对于彼此是正确的,但是会随着设备的CPU工作负载的变化而变化。因此,它不会反映设备上的真实世界性能速度,您应该多次进行配置,以获得平均测量的数据。
在任何情况下,您的应用程序出现意外的性能下降,红色节点是一个潜在的问题。在相对设置中,总是有一个最慢的节点; 只需确保它是您期望的节点。
具体详情可以参考原文https://developer.android.com/studio/profile/hierarchy-viewer.html#setup
网友评论