Andorid性能优化-渲染

屏幕刷新频率
多数手机屏幕刷新的频率是60hz,也就是1000/60=16.67(大约),  若在16.67ms内没有执行完这一帧, 就会出现丢帧现象,
当丢帧严重的时候就会出现我们肉眼看到的画面卡顿。

布局渲染到屏幕过程

先看几个概念:

  • 格栅化:将控件、文字等拆分成不同像素,在屏幕上显示。由于格栅化比较复杂,所以这一操作比较耗时。
  • CPU:用来将控件处理成多边形或则纹理。
  • GPU:用来处理图像。
  • OpenGL ES:用来绘制图形。

渲染过程:

控件->经过CPU处理转化为多边形或则纹理->传给GPU格栅化->屏幕。

注意:上传GPU后的数据,会被保存,下次绘制的时候,直接告诉OpenGL ES怎么绘制就行了。

如下图(官方盗图):

这里写图片描述

过度绘制
屏幕上的一个像素绘制多次,如:带有背景色的TextView,就会绘制两次,一次是文本,一次是背景。
过度绘制的原因
  • 复杂的布局层级
  • 背景色重叠

检测工具
  • **Hierachy Viewer:可以查看view的层级,包括各层级的meausre、layout、draw三个阶段的时间。
  • **调试GPU过度绘制:蓝-绿-淡红-红,最好控制在绿或则蓝,想在开发中不存在颜色?不存在的,这辈子都不可能,不信你看看google自己的应用,哈哈哈~
  • **Lint工具:帮你检测不合理的布局,代码优化。

避免过度绘制方法
  • 移除默认的window背景
  • 移除布局、控件非必要的背景
  • 按需加载占位图
  • 动态加载布局
  • 减少布局层次
  • 自定义View时候,被遮盖的布局不要绘制,Canvas.clipRect()剪切

你说?还有include、viewstub、merge标签?教程太多。。。

参考:
魅族专注性能工程师
腾讯大佬-胡凯
优达学城-视频

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值