安卓-页面卡顿-分析方法

  • 界面卡顿影响的页面 :
    • ListView
    • ScrollView
    • 有动画的页面 
  • 分析步骤
    1. 打开调试开发者选项,GPU呈现模式分析
    2. 如果蓝色部分比较高,说明是UI线程性能问题
    3. 红色部分比较高,应该是DrawList比较复杂,这部分可能跟蓝色部分相关。目前还没想到蓝色部分不高,红色部分搞的案例。
    4. 黄色部分搞,也许是GPU太忙,也许是CPU太忙。 GPU太忙,说明DrawList太多,CPU太忙,说明要么主线程性能有问题,要么GPU太忙,来不及通知主线程。
    5. 总的来说,三部分是相关的。蓝色部分的高,可以直接导致红色和黄色部分的高,所以,重点还是分析蓝色部分的高。
  • 如何分析主线程性能问题
    • 两种类型的影响因素
      • 全局级别的影响因素:
        •  比如CPU性能低
        • 内存不足,频繁GC
      • 页面级别的影响因素
        • 页面的 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.
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值