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

其他优化及实践

作者: 锋锋锋 | 来源:发表于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项目就优化完了。

相关文章

  • 其他优化及实践

    Android性能优化系列——Understanding Overdraw Android系统提供了测量Overd...

  • 千万级MySQL数据库建立索引,提高性能的秘诀

    实践中如何优化MySQL 实践中,MySQL的优化主要涉及SQL语句及索引的优化、数据表结构的优化、系统配置的优化...

  • 动态合批和静态合批的区别

    参考文章:图形渲染及优化—Unity合批技术实践图形渲染及优化—Batch 批是啥?对某对象进行批量处理叫批处理 ...

  • iconfont 实践及使用优化

    公司在前一段时间将大量图标进行了iconfont的替换,大大缩减了app的size。这几天,寻思着在自己app上也...

  • 其他优化

    1、Android不用静态变量存储数据1)静态变量等数据由于进程已经被杀死而被初始化2)使用其他数据传输方式:文件...

  • 其他优化

    一.android不用静态变量存储数据 1.静态变量等数据由于进程已经被杀死而被初始化 2.使用其他数据传输方式:...

  • 其他优化

    1.在android中不用静态变量来存储数据 (1)静态变量等数据由于进程已经被杀死而被初始化 (2) 使用其他来...

  • 关于web端的优化

    Web前端优化最佳实践及工具集锦发表于2013-09-23 19:47| 34107次阅读| 来源Googe & ...

  • 优化 App 的启动时间实践 iOS

    优化 App 的启动时间实践 iOS 优化 App 的启动时间实践 iOS

  • RocksDB调参随记

    [TOC] 参考 字节跳动自研强一致在线 KV &表格存储实践 - 上篇 【Rocksdb实现分析及优化】leve...

网友评论

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

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