前言
在日常开发中,Android的性能优化是我们需要一直关注的点。那么本文也是老生常谈,说说Android的性能优化绘制篇。我们在日常开发中该怎么去做绘制优化的分析,以及一些绘制优化的一些场景。
一、Android绘制优化可以切入的点
我们知道,打游戏有一个参数叫fps,也就是帧率,也就是1s内页面刷新了多少次。如果帧率低于60fps,人的肉眼可以明显感知到画面卡顿。那么要想人眼感觉不卡,一帧绘制的时间也就必须低于1/60s,也就是16.33ms。
那么Android绘制优化也就是着手与解决哪些场景会导致一帧绘制的时间大于16.33ms。以及有什么工具可以帮助我们快速的发现帧绘制时间异常的地方。一般导致帧绘制时间过长的原因有以下几点:
-
Layout布局过于复杂
Layout过于复杂,导致绘制时间变长,也就导致了一帧绘制的时间大于16.33ms -
执行动画过多,导致GPU和CPU负载严重
执行了过多的动画,导致GPU和CPU负载严重,没法全部投入到帧的绘制中,导致绘制时间大于16.33ms -
View的过度绘制
同一时间某些像素点被绘制了多次,浪费了CPU和GPU资源 -
频繁的内存GC
我们都知道GC是需要暂停的,只有暂停了才能知道哪些对象是可回收的对象。而一般的GC暂停时间都在2ms左右有的时候甚至可能6ms,如果一帧内GC过于频繁,势必导致一帧的绘制的时间大于16.33ms -
在UI线程中做了耗时操作
这个应该不用多说,如果UI线程里做了耗时操作,势必阻塞UI线程,从而影响了帧的绘制
二、Android绘制优化的一些工具
-
开发者选项里的查看绘制时长的工具
一般手机系统里都会有一个开发者工具,这个开发者工具里有一个查看帧绘制的工具。如下图所示,一帧的绘制时间就是一个柱状,大于红线就说明一帧绘制时间大于16.33ms。
开发者选项里查看过度绘制的工具
一般手机系统里都会有一个开发者工具,这个开发者工具里有一个查看过度绘制的工具。如下图所示,如果区域显示红色,则代表该区域过度绘制可以进行优化。