art*_*lar 32 graphics android surfaceflinger
我想问一下SurfaceFlinger是否总是被调用到屏幕上的任何类型的绘图?例如,在屏幕上显示JPG文件.
hac*_*bod 35
SurfaceFlinger 不是绘制窗口的东西.它为您的窗口分配一个帧缓冲区,在您的应用程序中运行的框架直接绘制,而不与SurfaceFlinger交互.绘制窗口时,SurfaceFlinger所涉及的唯一交互是在绘制完框架后将最终的新帧缓冲区合成到屏幕上.
Fra*_*ank 17
是的,SurfaceFlinger是Android的合成器,因此它会显示所有将显示的内容,找出所得到的帧的外观,然后将其发送出去,通过显卡的EGL界面显示在屏幕上.
您可以了解它控制Android开发人员Jeff Sharkey在帖子中看到的所有内容的结果,他在那里为夜间模式着色整个屏幕.我还发现了一个关于这个主题看起来很好的投影仪演示.
pie*_*fou 15
http://pierrchen.blogspot.jp/2014/02/what-is-surfaceflinger-in-android.html
SurfaceFlinger是一个Android系统服务,负责将所有应用程序和系统表面合成为一个缓冲区,最终由显示控制器显示.
让我们放大上面的陈述.
SurfaceFlinger是一个系统范围的服务,但它不能直接供应用程序开发人员使用,因为传感器或其他服务可以.每次要更新UI时,SurfaceFlinger都会启动.这就解释了为什么SurfaceFlinger是一个电池滤水器.
除了应用程序曲面外,还有系统曲面,包括状态栏,导航栏以及旋转发生时,系统为旋转动画创建的曲面.大多数应用程序只有一个活动表面 - 当前前景活动之一,其他应用程序在视图层次结构中使用SurfaceView或使用表示模式时有多个活动表面.
SurfaceFlinger负责复合所有这些表面.一个常见的误解是SurfaceFinger用于绘图.这是不正确的.绘图是OpenGL的工作.有趣的是SurfaceFlinger也使用openGL进行合成.
合成结果将放在系统缓冲区或本机窗口中,这是显示控制器从中获取数据的源.这是你在屏幕上看到的.