Android 绘制优化

序言

在开发app时,我们经常会提及一个词,卡顿。因为肉眼可接受的最低流畅度,为60帧/s。所以,当1秒内无法绘制到足够的帧数时,从肉眼看,就会表现为卡顿。因此,要确保每秒能够绘制到足够的帧数,平均地讲,我们需要确保每帧的绘制时间不高于16.6ms(1s % 60 == 1000ms % 60 ~= 16.6ms)。如何尽量确保每帧的绘制时间低于这个值。我们需要先知道,究竟是什么在耗时,这样才能对症下药,而这也是我们这篇文章所要探讨的。

一、GPU渲染分析。

  1. 开启渲染监控。开发者模式->监控->GPU呈现模式分析->条形图。如下图所示:
    在这里插入图片描述
  2. 条形图分析。这里颜色种类比较多,我们只讲几个重要的。
  • 深蓝色。表示onDraw()方法的执行时长,该方法越耗时,对应色就越长。
  • 浅绿色。表示onMessure/onLayout的执行时长,这两个方法越耗时,对应色也越长。
  • 黄 色。表示CPU等待GPU执行绘制的时间,GPU执行绘制越久,对应色也越长。
  • 红 色。表示Open GL执行由Android 2D 渲染器发送过来的,需要绘制/重绘的渲染列表。总的需要渲染的任务越多,执行的时间越长,则对应色也越长。
  • 浅蓝色。表示发送位图信息到GPU的时间,需要绘制的图片越大,越多。对应色也越长。(这里只是发送,还没绘制…)
  • 深绿色。表示在连续的2帧绘制之间,所占用的时间。正常情况下,绘制完第1帧,会马上开始执行第2帧的绘制。但如果,在绘制完第1帧后,在绘制第2帧之前,因为第2帧的计算、测量或其它操作,导致耗时过多。则会导致第2帧绘制的总时长变长,进而可能导致卡顿。当深绿色过多时,可以排查一下,是不是有些计算任务可以交给非UI线程去处理。

… 待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值