Android View性能优化

      最近被公司外派到兄弟公司支援某个app的重构,业务重构过程中,有测试反馈说重构后的版本相比之前的版本出现了严重的卡顿问题,于是开始了View层级的性能优化。本篇文章主要是讲述View性能的发现、调试,不详细介绍View渲染的原理、调试工具如何使用等。不过本文会给出相应知识点的相关链接,大家如需详细了解,可点击进入对应文章。

       本文从简略讲述View的渲染原理和三种常用ViewGroup性能分析出发,然后介绍发现APP运行过程中各种View性能检测的工具,并详细介绍如何在过度渲染、频繁渲染、渲染范围、布局层级、UI工作量等方面进行优化。

       每个View的渲染都包括Measure、Layout和Draw三个过程,其中Measure用来计算View的大小,Layout用来计算View的位置,Draw用来绘制View,每个步骤的具体流程可参见链接:http://www.cnblogs.com/jycboy/p/6066654.html

View的渲染原理

单个View的渲染

     每个View的渲染都包括Measure、Layout和Draw三个过程,其中Measure用来计算View的大小,Layout用来计算View的位置,Draw用来绘制View,每个步骤的具体流程可参见链接:http://www.cnblogs.com/jycboy/p/6066654.html    

     Measure和Layout过程我们在这不做描述,简单说下Draw的内容:
  1. 绘制自身背景
  2. 绘制自身内容
  3. 绘制子控件
  4. 控制滚动条、阴影等部分
    为了提高View渲染效率,应该尽可能减少View的渲染内容,比如自身背景。

View的渲染流程

    单独为一个View执行刷新操作,并不会仅仅更新该View,而是会逐级上报,一直到rootview,并通过各种条件判断是否需要重新绘制其它View,有此可以看出,稍微使用不当,会很容易导致全屏渲染,而我们发现的性能问题,也即是该原因引起的。为了能更好的了解优化方案,掌握了解View渲染的流程是非常有必要的。


    每次对View的刷新都会执行以上流程,详细情况请参见https://www.cnblogs.com/jycboy/p/6219915.htmlhttp://www.cnblogs.com/jycboy/p/6066654.html

ViewGroup的性能分析

    我们知道View通常都是依附ViewGroup存在,ViewGroup中存放View的个数以及相互依赖也是影响性能的一个重要原因。我们常用的ViewGroup为FrameLayout、LinearLayout和RelativeLayout,这三种Layout在布局时处理方式不同,所带来的效率也肯定存在差异。本文不详细介绍三种Layout的区别以及在渲染过程

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值