hierarchy viewer
- 安装
该工具在ddms里.在安卓3.1以后.DDMS需要去sdk/tools里.有个monitor的批处理双击打开.
这个工具只是一个客户端,真正连接手机的是viewServer这个服务端,Hierarchy Viewer只能连接Android开发版手机或是模拟器使用.需要下边方法.
https://github.com/romainguy/ViewServer](https://github.com/romainguy/ViewServer
如果不能翻墙的话.用下边也可以.直接把ViewServer的类放在APP项目中
https://blog.csdn.net/chenjian723122704/article/details/79010625
效果如下.不知为何,我这个没显示出UI的测量布局绘制用时.
补充.选中某个视图,点击中间屏幕右上角的图案,可以计算测量布局绘画的时间
按钮位置
具体时间
优化前
- 要点
嵌套层级越多,视图树越复杂,渲染时间越长.
RelativeLayout经常需要对子view测量两次来确保放在正确位置
LinearLayout如果设置了weight,也需要测量两次来得到子视图的尺寸.
要通过减少布局的层级来加快屏幕绘制,可以多使用ConstraintLayout来控制多层级布局,这里附一个比较好的手册
https://juejin.im/post/5bac92f2f265da0aba70c1bf#heading-8
附一张优化优化一半的图.可以看到.越是子视图越比较好优化.跟布局反而比较难动.需要注意.下图中框住的那一部分,是系统自身的布局.我们自己的视图要从id/content之后的视图开始看.
优化一部分后
接着在推荐Android studio 3.x上的新工具.两个可以一起用
layout inspector
每次点击都会生产一个当前页面的视图总览,然后文件会保存在captures目录下
生产文件位置
具体文件打开后如下,左边是视图树,中间是视图对应的APP页面.右边是该视图的所有属性
文件打开效果
可以根据这个来优化页面布局.每次进行一些优化后.重新生成新布局.速度很快.
GPU渲染
-
查看渲染信息 adb shell dumpsys gfxinfo com.123.123 //最后是包名
渲染信息1
total 一工渲染多少帧
50th 50%的帧渲染用时
95th 95%的帧渲染用时
最后五行列出未能在16毫秒内完成渲染的原因.
systrace
这个软件在Android device monitor中,如下
monitor中的位置
他还弹框让你选个位置.然后保存一个HTML文件.默认持续时间是5s
生成的html
也可以使用命令行
使用python命令以及systrace.py工具 systrace.py工具位置在 sdk/platform-tools/systrace;
python systrace.py [options] [categories]
调用systrace来记录10秒钟内的设备进程,包括图形进程,并生成mynewtrace.html报告 具体命令如下
python systrace.py --time=10 -o mynewtrace.html gfx
一个讲解的文字
https://juejin.im/post/5b3cce09e51d45198651069f
重点可以看一下uiThread 和Render Thread的情况.如果他们没在一帧内绘出东西.就会卡顿.
卡顿情况
放大看.看到了一个代码中的控件
image.png
说明这个控件的渲染时间太长了.那么就要针对这里进行ui优化.