Render Performance

google 公开课 https://www.udacity.com/course/ud825

Render Performance 主要讲的是关于绘制性能的优化

界面卡顿的根源

android系统采用60帧每秒的刷新频率,因此帧间隔是16ms。我们所有的计算过程都要在16ms中完成,如若不然,就会导致丢帧,只要有丢帧,就会导致界面卡顿。

android View的简单的绘制过程

《Render Performance》 android_performance.png

上图中,比较慢的过程分别是

  1. 生成display list
  2. 将绘制信息传送到GPU

优化

android系统已经对我们的绘制过程进行了大量的优化,对于开发者而言,我们主要关注下面两点

  1. overdraw (GPU端)
    overdraw主要会带来无效的绘制,拖慢速度

    • overdraw的Debug工具
      android系统已经为我们提供了检查overdraw的工具,在设置->开发者选项 中即可开启。开启后,界面上将会出现4种颜色,其中,蓝色表示 overdraw 一次,绿色两次,浅红三次,深红四次,如果现实的是原来的颜色,表示没有overdraw
    • 如何减少overdraw
      减少overdraw主要要注意以下几点
      1. 不要设置无用的背景。
        例如:将window的背景设置为null
        getWindow().setBackgroudDrawable(null);
        还有,移除layout中非必要的背景
      2. 对于自己绘制的custom view,使用cliprect方法来指定绘制区域,避免 canvas做无效绘制
  2. layout (CPU端)
    layout生成display list也是耗时的工作,每次layout大小,位置等信息的改变也会导致display list的重新生成,为了加快display list的生成速度,我们要尽可能的保证layout的简单平坦
    使用Hierarchy view找出layout中较慢的点。详情请参考文章开发的视频

    原文作者:yezi
    原文地址: https://www.jianshu.com/p/0e3446a195a8
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞