文档章节

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

囧-囧
 囧-囧
发布于 2016/05/16 13:29
字数 772
阅读 18
收藏 0
  • 界面卡顿影响的页面 :
    • 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.

© 著作权归作者所有

共有 人打赏支持
囧-囧
粉丝 0
博文 1
码字总数 772
作品 0
南宁
ViewPager嵌套GridView引发的一系列UI卡顿不顺畅的问题

由于项目要求,需要做一个日历的页面,做法采用ViewPgaer+GridView来做,初步过程很顺利,成型以后,出现UI现象有(1)Acitivity加载时间过长 (2)滑动Viewpager出现卡顿现象; 这两个问题看...

ice_Anson
2013/07/22
0
3
【android测试】值得学习的android测试知识连接

Android应用程序的debug属性: http://blog.csdn.net/hudashi/article/details/8698142 彻底解决Android 应用方法数不能超过65535的问题 http://blog.csdn.net/yuanzeyao/article/details/418......

beijing_zbs
2014/12/02
0
0
Android工具TraceView

一、TraceView 简介 TraceView 是 Android 平台特有的数据采集和分析工具,它主要用于分析 Android 中应用程序的 hotspot。TraceView 本身只是一个数据分析工具,而数据的采集则需要使用 ...

恰同学少年
2015/08/02
0
0
移动web页面支持弹性滚动的3个方案

position:fixed 和 overflow:auto 进行简单的布局实现我们需要的效果,而在手机端遇到的问题如下:

同一种调调
2014/07/17
0
0
Android应用性能优化之分析工具[二]

Android应用性能优化之分析工具   上一次记录了解决过度绘制的过程,这一次,想先弄清个概念性的东西,就是如何判断顺不顺畅?   这东西其实最初我自己也觉得有点废话,用起来会卡就明显...

Jerikc
2013/05/20
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

arts-week5

Algorithm 824. Goat Latin - LeetCode 152. Maximum Product Subarray - LeetCode 110. Balanced Binary Tree - LeetCode 67. Two Sum II - Input array is sorted - LeetCode 665. Non-dec......

yysue
11分钟前
0
0
iOS开发之AddressBook框架详解

iOS开发之AddressBook框架详解 一、写在前面 首先,AddressBook框架是一个已经过时的框架,iOS9之后官方提供了Contacts框架来进行用户通讯录相关操作。尽管如此,AddressBook框架依然是一个非...

珲少
41分钟前
1
0
两年摸爬滚打 Spring Boot,总结了这 16 条最佳实践

Spring Boot是最流行的用于开发微服务的Java框架。在本文中,我将与你分享自2016年以来我在专业开发中使用Spring Boot所采用的最佳实践。这些内容是基于我的个人经验和一些熟知的Spring Boot...

Java填坑之路
今天
3
0
《Spring5学习》04 - 面向切面编程

一、Spring面向切面编程的基本概念 面向切面编程(即AOP):把项目中需要再多处使用的功能比如日志、安全和事务等集中到一个类中处理,而不用在每个需要用到该功能的地方显式调用。 横切关注...

老韭菜
今天
2
0
day61-20180819-流利阅读笔记

跑道没了,它们还在跑:澳门赛狗业的遗孤 Daniel 2018-08-19 1.今日导读 相信你早就知道香港有个赛马会,可是你听说过香港的邻居澳门原本有个赛狗会吗?其实,对于澳门人来说,赛狗这项活动历...

aibinxiao
今天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部