Hierarchy View常见问题收集

2017-07-23  本文已影响0人  Mr丶JAL

Hierarchy View 在Android SDK里自带,常用来查看界面的视图结构是否过于复杂,用于了解哪些视图过度绘制,又该如何进行改进。
首先还是简单的介绍下使用方法
通过打开Android Device Monitor,添加hierarchyviewer视图

image.png

链接设备,启动你要调试的app,选择你要获取Tree View的Activity,最后点击Load View Hierarchy

image.png

选择一个节点,就可以获取到布局绘制的时间,如图:


image.png

这里我们主要关注下面的三个圆圈,从左到右依次,代表View的Measure, Layout和Draw的性能,不同颜色代表不同的性能等级:

但我们在使用过程中可能会遇到一些文件,现在就把我遇到的问题和一些解决的方法列一下

一、HierarchyViewer不能连接真机的问题

[hierarchyviewer]Unable to get view server version from device 00856cd5d08d2409
[hierarchyviewer]Unable to get view server protocol version from device 00856cd5d08d2409
[ViewServerDevice]Unable to debug device: lge-nexus_4-00856cd5d08d2409
[hierarchyviewer]Missing forwarded port for 00856cd5d08d2409
[hierarchyviewer]Unable to get the focused window from device 00856cd5d08d2409

Android系统出于安全考虑,Hierarchy Viewer只能连接开发版手机或模拟器,我们普通的商业手机是无法连上的(老版本的Hierarchy Viewer可以),这一限制在
frameworks/base/services/java/com/android/server/wm/WindowManageService.java

解决方法

Shell

adb shell service call window 3

若返回值是:Result: Parcel(00000000 00000000 '........') 说明View Server处于关闭状态
若返回值是:Result: Parcel(00000000 00000001 '........') 说明View Server处于开启状态

若是一台可以打开View Server的手机,我们可以使用以下命令打开View Server:
adb shell service call window 1 i32 4939
使用以下命令关闭View Server:
adb shell service call window 2 i32 4939

二、无法获取Measure、Layout、Draw的时间

有时候当我们链接真机后获取viewtree之后出现下图的情况,无法获取时间

yymUQ.png
解决方法

选中你要获取时间的节点,然后点击"Profile Node"

image.png

如果你获取了Tree View这里会是高亮的,我的这个截图是没获取Tree View时的。

参考:http://blog.csdn.net/swordgirl2011/article/details/52887925
参考:http://blog.csdn.net/wangjia55/article/details/38121281

上一篇 下一篇

猜你喜欢

热点阅读