-
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
三种方式处理:- 真机Root 修改framework
- 设置电脑环境变量:ANDROID_HVPROTO=ddm
-
代码添加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的才结束。
文件中始终存在红色节点的,除非所有视图执行相同,并且不一定意味着红色节点的性能较差(它只是视图组中最慢的视图)
带有黄色或甚至红色点的视图是一潜在问题,但是在设备上可能不缓慢执行。可以查看实际数字。Systrace或TraceView可以提供更多信息。绿:表示该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一样
-
网友评论