Android性能优化Google课程翻译

Context:

我自己写下Google关于Android性能优化的视频课程的翻译,希望转载者不要删除我的博客地址http://blog.csdn.net/zhjali123

术语:

1.texture、meshes。举个例子,做一个飞机模型,你要先雕刻出立体的飞机模型(mesh),但是模型还没有上色,这是你要用张纸把它包起来,在上面画迷彩,这层有迷彩的纸就是(texture,中文叫纹理)。

Lesson1:Render(渲染)

1.Android设备通常16ms 更新下Activity,具体取决于手机硬件。这意味着你要在16ms内处理你所有的绘画逻辑。如果你错过了这个16ms,页面不会绘制,这就叫做 dropped frame。然而动画的运算并不会停止,所以呈现给用户的就是在平滑性上发生了跳跃。这就叫做laggy或者janky体验。

2.Android的渲染通道分为两个关键区域:CPU和GPU。

CPU(measure测量-->layout布局--->record记录--->execute执行)---->GPU(rasterization光栅化:计算每一个像素点的值)

CPU的问题:不必要的layout,视图层次(View Hierachy)中无意义的计算、拆分(torn down)、重建(rebuilt)

XML转换到屏幕显示的原理过程:

XML----转换---->Screen,核心步骤:rasterization光栅化(如图)。Rasterization是非常的消耗资源,所以上个世纪90年代引入了单独的图像处理单元GPU。GPU使用一些指定的基础指令集(set of primitive: polygons多边形,textures 文理,images 图像),而CPU在画东西到屏幕前,会给GPU输入这些指令(a set of primitive)。这一过程通常使用的API就是Android的OpenGL
ES。

这意味着如果画一个button,他会在CPU中先转化为polygons多边形、texture纹理((computer
graphics) An image applied
to a polygon to create the appearance of a surface:图像被添加到一个多边形上来创造事物的外观)------------》传递给GPU进行rasterization光栅化。

其中有两处耗时操作:

1.在CPU中将button等事物 转换成相应的形状(polygons),绘制它的表面(texture)

2.CPU将数据传送GPU

对应措施:

你要减少CPU中绘制的事物和CPU往GPU上载数据,而OpenGL ES提供了向GPU上传数据和保存数据的API。所以,当你下次绘制一个button时,你只需要在GPU中引用它(也就是在GPU中完成polygons、texture),告诉OpenGL如何进行绘制它。一条经验之谈就是:优化渲染的性能意味着,尽可能快的上传数据到GPU和在GPU上尽可能长的保留数据。

从HoneyComb版本开始,整个View的渲染就在GPU中,并不断优化,所以你不用关心这个。例如:任何你的theme提供的资源如Bitmaps、Drawables等,被整合到一个单独的texture(感觉就是事物表面的意思)中,然后使用meshes上传到GPU像是点9图。这样每次你需要绘制这些资源时,你就不用做任何转换,他们已经存储在GPU中了。

然而随着UI事物更加先进,绘制流程也更加复杂。例如绘制一个image,这意味着上传Image到CPU再到GPU。使用Path则完全不同,你需要在CPU中创建一连串的polygons多边形,甚至在GPU中创建masking texture(蒙版纹理)来定义path。绘制字符,首先你必须在CPU中将绘制image---》上传到GPU---》在屏幕上绘制每一个字符串中字符的正方形,这些都被Android系统所处理。而这存在程序员都会遇的GPU问题OverDraw(过度绘制)

今天晚上在继续翻译吧!

时间: 2024-08-03 07:42:06

Android性能优化Google课程翻译的相关文章

Android性能优化Google课程翻译一:Render----OverDraw实战

Context 最近实战了下OverDraw,加深了下理解.在上篇文章里Android性能优化Google课程翻译一:Render----OverDraw 写过具体方法. OverDraw解决方法离不开View,给我的感觉好像是加了层View就会加一层.但本质上如名字OverDraw,还是和Draw有关系,和几层View没关系.如下实例: Button 如下图, 书架和书城是一个Button,然后我把书架的Button findViewById(R.id.main_jump_shelf).set

Android性能优化Google课程翻译一:Memory

相关知识: ART:Android从4.4引入了一个ART(Android runtime),之前管理应用的runtime是用的Dalvik. ART增加了预编译.优化GC(如并行处理.压缩GC时间.GC处理最近分配的Object更快...) Memory Leak(内存泄露):内存已经不被使用,但是GC时没有识别出来.导致一直保存,内存无法被释放. Memory,GC,Performance关系: 简单地说Memory会被GC,内存被分割程不同的空间.根据不同的内存分配类型(type of a

Android性能优化Google课程翻译一:Render----OverDraw

Context: 继续上述文章,我们已经知道了如何收集信息找到OverDraw.现在,我们要如何解决呢? 方法: 背景色: 1.去掉多余的背景色: 在onCreate()方法中加入:getWindow().setBackgroundDrawable(null); (我这里北京刚开始是不透明opaque) 2.找到底层View的背景色然后去掉. Clip剪切: Android的系统会对重叠的View进行剪切,只计算显示的部分.然而这个特性并没有很好地拓展到自定义View中,所以你需要自己做些处理.

Google 发布 Android 性能优化典范

2015年伊始,Google发布了关于Android性能优化典范的专题, 一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App.课程专题不仅仅介绍了Android系统中有关性能问题的底层工作原理,同时也介绍了如何通过工具来找出性能问题以及提升性能的建议.主要从三个 方面展开,Android的渲染机制,内存与GC,电量优化.下面是对这些问题和建议的总结梳理. 0)Render Performance 大多数用户感知到的卡顿等性能问题的最主要根源都是因为渲染性能.从设计

Google 发布的15个 Android 性能优化典范

2015年伊始,Google发布了关于Android性能优化典范的专题,一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App.课程专题不仅仅介绍了Android系统中有关性能问题的底层工作原理,同时也介绍了如何通过工具来找出性能问题以及提升性能的建议.主要从三个方面展开,Android的渲染机制,内存与GC,电量优化.下面是对这些问题和建议的总结梳理. 0)Render Performance 大多数用户感知到的卡顿等性能问题的最主要根源都是因为渲染性能.从设计师的

android app性能优化大汇总(google官方Android性能优化典范 - 第2季)

Google前几天刚发布了Android性能优化典范第2季的课程,一共20个短视频,包括的内容大致有:电量优化,网络优化,Wear上如何做优化,使用对象池来提高效率,LRU Cache,Bitmap的缩放,缓存,重用,PNG压缩,自定义View的性能,提升设置alpha之后View的渲染性能,以及Lint,StictMode等等工具的使用技巧. (1)Battery Drain and Networking 对于手机程序,网络操作相对来说是比较耗电的行为.优化网络操作能够显著节约电量的消耗.在性

[Android Pro] Android性能优化典范第一季

reference to : http://www.cnblogs.com/hanyonglu/p/4244035.html#undefined 2015年伊始,Google发布了关于Android性能优化典范的专题,一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App.课程专题不仅仅介绍了Android系统中有关性能问题的底层工作原理,同时也介绍了如何通过工具来找出性能问题以及提升性能的建议. 主要从三个方面展开,Android的渲染机制,内存与GC,电量优化.下

Android性能优化典范第二季

Google前几天刚发布了Android性能优化典范第2季的课程,一共20个短视频,包括的内容大致有:电量优化,网络优化,Wear上如何做优化,使用对象池来提高效率,LRU Cache,Bitmap的缩放,缓存,重用,PNG压缩,自定义View的性能,提升设置alpha之后View的渲染性能,以及Lint,StictMode等等工具的使用技巧.关于该课程的介绍可以查看该地址:https://www.udacity.com/course/android-performance--ud825. 未完

Android性能优化典范(一)

2015年伊始,Google发布了关于Android性能优化典范的专题,一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App.课程专题不仅仅介绍了Android系统中有关性能问题的底层工作原理,同时也介绍了如何通过工具来找出性能问题以及提升性能的建议.主要从三个方面展开,Android的渲染机制,内存与GC,电量优化.下面是对这些问题和建议的总结梳理. 0)Render Performance 大多数用户感知到的卡顿等性能问题的最主要根源都是因为渲染性能.从设计师的