美文网首页
其他优化及实践

其他优化及实践

作者: 锋锋锋 | 来源:发表于2016-08-09 01:58 被阅读14次

    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(图片太长,以下的图均为截图方式)

    上面有一个多余的线形布局,在主页的代码里把它删了

    图中可以看到这三种颜色,在这里把它修改。

    这里可以看到第一个按钮的java代码,它的页面内容其实是一层一层绘制出来的,这样就出现了过渡绘制问题。

    第二个按钮的java代码里我们可以看到有个循环结构,这个循环结构是没有意义的,所以可以删除。

    删除后

    这样bug项目就优化完了。

    相关文章

      网友评论

          本文标题:其他优化及实践

          本文链接:https://www.haomeiwen.com/subject/etorsttx.html