概述
总结来源与Google发布的性能优化的视频 Android Performance Patterns 和 Android Performance Optimizing Apps for Speed and Usability 。对于用户感到卡顿,不流畅的原因有很多,比如Layout层级结构过深,动画过多,界面刷新,等等导致了CPU或者GPU的负担过重,16ms内无法完成一帧的绘制,导致了掉帧,从而表现出卡顿,不流畅.
绘制原理
为了更好的理解UI优化,在此之前先要说明一下硬件的基础。
VSYNC
两个概念 :
- Refresh Rate:代表了屏幕在一秒内刷新屏幕的次数,这取决于硬件的参数,例如60Hz。
- Frame Rate:代表了GPU在一秒内绘制的帧数,例如60fps。
GPU获取图形数据绘制,然后硬件负责把绘制的内容显示再屏幕上,二者协调正常。
如果帧速率高于屏幕刷新速率,就会出现撕裂的现象,一部分显示当前的帧,一部分显示现在的,这种解决的方案就是双缓冲机制。GPU将帧写进存储器被成为back buffer,而存储器的次级区域成为frame buffer,当写入一帧时,它会开始填充back buffer,而framen buffer保持不变