文章都是通过阅读源码分析出来的,还在不断完善与改进中,其中难免有些地方理解得不对,欢迎大家批评指正。
转载请注明:From LXS. http://blog.csdn.net/uiop78uiop78/
GUI系统之SurfaceFlinger章节目录:
blog.csdn.net/uiop78uiop78/article/details/8954508
1.1 SurfaceFlinger
从这一小节开始,我们正式切入SurfaceFlinger的分析。为了保持讲解的连贯性,部分内容可能在前面的章节中已经有所涉及了,接下来将会对其中的细节做更多的扩展讲解。
内容组织如下:
l 首先介绍Android 4.1引入的新特性(Project Butter),理解这个项目是必要的,可以说SurfaceFlinger有很大一部分的内容就是围绕它来的
l SurfaceFlinger的启动过程及工作方式
l SurfaceFlinger与BufferQueue及应用程序间的关系
l SurfaceFlinger对VSYNC信号的处理过程(重点)
1.1.1 ProjectButter
直译过来,就是“黄油计划”,为什么叫这个名字呢?这个Project的目的是为了改善用户抱怨最多的Android几大缺陷之一,即UI响应速度——Google希望这一新计划可以让Android系统摆脱UI交互上给人带来的“滞后”感,而能像黄油一般“顺滑”。Google在2012年的I/O大会上宣布了这一计划,并在Android 4.1中正式搭载了实现机制。
Butter中有两个重要的组成部分,即VSync和Triple Buffering。下面先分别介绍引入它们的原因。
喜欢玩游戏或者看电影的读者可能遇到过这样的情形:
Ø 某些游戏场面好像是几个场景“拼凑”而成的
Ø 电影画面不连贯,好像被“割裂”了
这样子描述有点抽象,我们引用widipedia上的一张图来看下实际的效果:
图 11‑20 Screen Tearing实例