Android性能优化系列——Understanding Overdraw
Android系统提供了测量Overdraw的选项,在开发者选项-调试GPU过度绘制(Show GPU Overdraw),打开选项就可以看到当前页面Overdraw的状态。
过度绘制(Overdraw)是指在一帧的时间内像素被绘制了多次:
理论上一个像素每次只绘制一次是最优的,但是由于层叠的布局导致一些像素会被多次绘制,而每次绘制都会对应到CPU的一组绘图命令和GPU的一些操作,所以对重叠不可见元素的重复绘制会产生额外的计算,需要尽量减少Overdraw的发生。
根据overdraw的次数会显示不同的颜色来区分:
没有颜色:意味着没有overdraw。像素只画了一次。
蓝色:意味着overdraw 1倍。像素绘制了两次。大片的蓝色还是可以接受的(若整个窗口是蓝色的,可以摆脱一层)。
绿色:意味着overdraw 2倍。像素绘制了三次。中等大小的绿色区域是可以接受的但你应该尝试优化、减少它们。
浅红:意味着overdraw 3倍。像素绘制了四次,小范围可以接受。
暗红:意味着overdraw 4倍。像素绘制了五次或者更多。这是错误的,要修复它们。
优化方案请看这里http://www.2cto.com/kf/201504/390390.html
下载bug项目https://github.com/lzyzsd/AndroidUIPorblems,请注意打开开发者选项中的ShowOverDraw选项,查看都有哪些过度绘制区域,并作出优化。
bug项目主页面
打开Overdraw(图片太长,以下的图均为截图方式)
上面有一个多余的线形布局,在主页的代码里把它删了
图中可以看到这三种颜色,在这里把它修改。