美文网首页
怎么使用Hierarchy View

怎么使用Hierarchy View

作者: 6e3bd4186e4b | 来源:发表于2017-06-01 17:40 被阅读205次

    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

    相关文章

      网友评论

          本文标题:怎么使用Hierarchy View

          本文链接:https://www.haomeiwen.com/subject/kpmefxtx.html