安卓-页面卡顿-分析方法
博客专区 > 囧-囧 的博客 > 博客详情
安卓-页面卡顿-分析方法
囧-囧 发表于2年前
安卓-页面卡顿-分析方法
  • 发表于 2年前
  • 阅读 16
  • 收藏 0
  • 点赞 2
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

  • 界面卡顿影响的页面 :
    • 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.
标签: android 优化 卡顿
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 1
码字总数 772
×
囧-囧
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: