美文网首页
Monitor--Hierarchy view

Monitor--Hierarchy view

作者: ArcherZang | 来源:发表于2019-05-10 10:36 被阅读0次
  • Hierarchy view
    • 真机使用问题
          Hierarchy Viewer在连接手机时,手机上必须启动一个叫View Server的客户端与其进行socket通信。而在商业手机上,是无法开启View Server的,故Hierarchy Viewer是无法连接到普通的商业手机。
      在Android的官方文档中提到:
      To preserve security, Hierarchy Viewer can only connect to devices running a developer version of the Android system.
      即:出于安全考虑,Hierarchy Viewer只能连接Android开发版手机或是模拟器(准确地说,只有ro.secure参数等于0且ro.debuggable等于1的android系统)。

      检验一台手机是否开启了View Server的办法为:
          adb shell service call window 3
          返回值是:Result: Parcel(00000000 00000000 '........')" 说明View Server处于关闭状态
          返回值是:Result: Parcel(00000000 00000001 '........')" 说明View Server处于开启状态
      使用以下命令打开View Server:
          adb shell service call window 1 i32 4939
      使用以下命令关闭View Server:
          adb shell service call window 2 i32 4939
      三种方式处理:

      1. 真机Root 修改framework
      2. 设置电脑环境变量:ANDROID_HVPROTO=ddm
      3. 代码添加View Server
        如果遇到不显示,可以关掉后重新打开Monitor。
        以下是Gradle修改内容:
      repositories {
          maven { url 'https://jitpack.io' }
          jcenter()
          google()
      }
      dependencies {
         'com.github.romainguy:ViewServer:10c563a0b6'
      }
      

          以下时activity添加内容:

      public class MyActivity extends Activity {
          public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              // Set content view, etc.
              ViewServer.get(this).addWindow(this);
          }
          public void onDestroy() {
              super.onDestroy();
              ViewServer.get(this).removeWindow(this);
          }
          public void onResume() {
              super.onResume();
              ViewServer.get(this).setFocusedWindow(this);
          }
      }
      
    • Device Monitor窗口中Hierarchy View
      1. 选择Hierarchy view 窗口
      2. 双击要分析的APP进程,自动弹出Tree View
      3. Tree View选择某个View,View Properties显示对应属性值。
      Tree View:

      添加窗口
      Hierarchy view
      Tree View:显示视图层次结构的树状图。可以使用鼠标和底部的缩放控件拖动和缩放树。每个节点指示它的视图类名和ID名。
      Tree Overview:提供应用完整层次结构视图的鸟瞰视图。移动灰色矩形来改变在Tree View中可见的内容。
      Layout View:显示布局的线框视图。当前选定视图的轮廓为红色,其父视图为浅红色。单击此处的视图也会在Tree View中选择它,反之亦然。
    • Save the tree view as a PNG image
      将Tree View视图保存为一个页面。

      Save the tree view as a PNG image
    • Capture the window layers as a photoshop document
      要将布局的分层屏幕截图保存到Adobe Photoshop(PSD)文件中,没效果

    • Reload the view hierarchy
      The view hierarchy是布局的快照,因此不会自动更新。需要更新The view hierarchy,可以点击“Reload the view hierarchy”。

    • Invalidate Layout:
      重绘当前View

    • Request Layout
      当前view重新进行layout

    • Obtain layout times for tree rooted at selected note
      要查看有关视图的详细信息,包括其度量、布局和绘制时间(如图3所示),请单击树视图中的视图。双击视图以查看放大的图像。然后点击Obtain layout times for tree rooted at selected note按钮,对于大型视图层次结构,分析可能需要几秒钟。如果不出现,点击"Profile Node"。
      所选节点的每个子视图都有三个点,可以是绿色、黄色或红色。
      三个点也是代表着View的Measure, Layout和Draw。
      点的颜色表示此节点相对于Tree View中所有其他已分析节点的相对性能。
      红色点分析:
      如果Root View是红色有可能是子view的问题,因为只有子view结束了,Root View的才结束。
      文件中始终存在红色节点的,除非所有视图执行相同,并且不一定意味着红色节点的性能较差(它只是视图组中最慢的视图)
      带有黄色或甚至红色点的视图是一潜在问题,但是在设备上可能不缓慢执行。可以查看实际数字。SystraceTraceView可以提供更多信息。

      绿:表示该View的此项性能比该View Tree中超过50%的View都要快;例如,代表Measure的是绿点,意味着这个视图的测量时间快于树中的视图对象的50%。
      黄:表示该View的此项性能比该View Tree中超过50%的View都要慢;
      红:表示该View的此项性能是View Tree中最慢的

      How the colored dots relate to the rendering pipeline
      Parts of the view node display
    • Display View
      单独弹出一个窗口中显示所选择的view

    • Dump DisplayList
      使当前view输出它的显示列表到logcat中

    • Profile Node
      和Obtain layout times for tree rooted at selected note一样

相关文章

网友评论

      本文标题:Monitor--Hierarchy view

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