安卓-页面卡顿-分析方法
- 界面卡顿影响的页面 :
-
- 分析步骤
-
- 打开调试开发者选项,GPU呈现模式分析
- 如果蓝色部分比较高,说明是UI线程性能问题
- 红色部分比较高,应该是DrawList比较复杂,这部分可能跟蓝色部分相关。目前还没想到蓝色部分不高,红色部分搞的案例。
- 黄色部分搞,也许是GPU太忙,也许是CPU太忙。 GPU太忙,说明DrawList太多,CPU太忙,说明要么主线程性能有问题,要么GPU太忙,来不及通知主线程。
- 总的来说,三部分是相关的。蓝色部分的高,可以直接导致红色和黄色部分的高,所以,重点还是分析蓝色部分的高。
- 如何分析主线程性能问题
-
- 两种类型的影响因素
-
- 全局级别的影响因素:
-
- 页面级别的影响因素
-
- 页面的 measure比较耗时
- 页面的 layout比较耗时
- 页面的 draw比较耗时
- 如何区分是全局影响因素还是页面影响因素
-
- 如果所有页面都慢,判定是全局级别因素
- 如果只有某个页面慢,判定是页面级别的原因
- 页面级别的影响因素一般原因
-
- 有自定义控件,measure, layout, draw效率比较低
- View 结构比较复杂或者不合理,导致 measure, layout效率比较低
- 页面结构设计复杂或者不合理,导致draw效率比较低,过度绘制
- 页面级别影响因素的分析工具及方法
-
- 自定义控件效率低下:用 method tracing可以发现
-
- Android Studio: Android Monitor-->start method tracing,结果用Exclusive Time排序
- Eclipse : DDMS--Start method profiling
-
-
- 页面不合理,导致 measure, layout慢: 用 View Hierarchy
-
- android studio: Tools->Android->Android Device Monitor(注意不是下面的Android Monitor)
-
- 在windows选择一个页面
- 点击树形组织结果-》load xxx to Tree view
- 点击view树的根节点
- 点击右上方按钮
- 三个小红点,分别是 measure, layout, draw时间。 看看那个报红色。
- 实际使用结果及建议
-
- 通过 methond profiling发现一个自定义控件onDraw的时候效率问题,通过 View Hierarchy没有发现draw的时间长的问题
- 建议: 谨慎相信其数据结果,不过可以用来作为较少UI层级的工具
- eclipse
- 页面不合理 ,导致过度绘制: 打开开发者选项-》调试GPU过度绘制
-
- 实际发现过度绘制,粉红,不会明显影响绘制性能
- 微信等大厂的首页,都做过过度绘制优化,颜色基本是蓝色,粉红的只有很少的面积
- 关于页面不合理
-
- 其实页面不合理的上述两个问题,都是通过调整XML文件,使布局更简单合理来解决
- 用 method profiling也能发现是 measure, layout,draw效率有问题。不见得只能用view Hierarchy 和 over draw.
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/34302.html
如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!