一.简介
Hierarchy Viewer是聚合在Android Device Monitor里的一个工具,可以使我们在页面层级中检查view的属性和布局的速度,有助于找到由于view层级导致的性能瓶颈,进一步帮助我们简化页面,减少过度重绘。
二.使用
1.打开方式
在Android Studio中通过 Tools → Android → Android Device Monitor 打开,点击 image.png选择Hierarchy View即可在DDMS旁显示图标。
2.使用
如果是模拟器或者开发版手机,则可以直接连接调试,值得一提的是,当打开Android Device Monitor时,因为对adb的占用点击Android Studio的运行按钮无法成功,因此需要关掉ADM再点击运行。
真机无法直接使用Hierarchy Viewer,需要进行相关的配置。
可使用如下方法进行,主要是通过添加第三方库ViewServer:
第一步:在项目中添加依赖,在build.gradle(Project:project_name)中添加
allprojects {
repositories {
... ...
maven { url "[https://jitpack.io](https://jitpack.io/ "https://jitpack.io")" }
}
}
在build.gradle(Moudle:app)中添加
dependencies{
... ...
compile 'com.github.romainguy:ViewServer:017c01cd512cac3ec054d9eee05fc48c5a9d2de'
}
第二步:在需要测试的Activity中添加如下代码,启动ViewServer
public void onCreate(Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
ViewServer.get(this).addWindow(this);
}
public void onResume() {
super.onResume();
ViewServer.get(this).setFocusedWindow(this);
}
public void onDestroy() {
super.onDestroy();
ViewServer.get(this).removeWindow(this);
}
注:有时可能需要声明网络权限:
<uses-permission android:name="android.permission.INTERNET"/>
三. 分析页面
1.页面理解
界面左侧有设备和正在运行的Activity,双击该Activity可以查看其布局层级的TreeView
image.png
在TreeView中选中一个节点,点击如图按钮
image.png
可以查看该view三大过程即Measure,Layout,Draw消耗的时间
image.png
三个圆点大致对应于measure,layout,draw的过程,可能出现三种颜色即绿,黄,红。
-
绿色表示该view的此项性能比至少50%的其他view要好,
-
黄色表示该view的此项性能比50%的其他view要差,
-
红色表示此项性能的水平在最慢的50%view之中。
2.结果解释
Hierarchy Viewer测量的是每个节点相对于其他view的表现,所以总是会有红色的圆点,所以红色圆点不一定说明这个过程在实际表现中很差。Hierarchy Viewer通过栅格化布局来获得时间信息,栅格化是将高级的图形变成屏幕上的像素点的过程。通常,栅格化在手机上是由GPU完成的,但是在使用软件进行栅格化的情况下,渲染是由CPU完成的,这就说明,报告中的时间在view相对之间是正确的,但是不能反映真机上的表现速度。
然而,红色圆点确实是一个潜在的问题,当APP页面出现一些明显的性能问题时,可以针对红点进行进一步分析。关于布局优化,是另外一个内容。
参考文档:https://developer.android.com/studio/profile/hierarchy-viewer.html
网友评论