我只想问一下,在屏幕上进行任何类型的绘图都会调用SurfaceFlinger吗?例如,在屏幕上显示JPG文件。
发布于 2011-04-18 14:59:54
SurfaceFlinger并不是绘制窗口的工具。它为您的窗口分配一个帧缓冲区,在您的应用程序中运行的框架无需与SurfaceFlinger交互即可直接绘制该缓冲区。当您绘制窗口时,SurfaceFlinger唯一涉及的交互是在完成框架绘制后将最终的新帧缓冲区合成到屏幕上。
发布于 2011-04-18 14:21:57
是的,SurfaceFlinger是Android的合成器,所以它接收将要显示的所有内容,计算出结果帧的外观,然后通过显卡的EGL接口将其发送到屏幕上显示。
你可以从Android开发人员Jeff Sharkey的一篇tints the whole screen for nightmode文章中得到这样的想法:它控制着你在帖子中看到的所有结果。我还发现了一个关于this topic的beamer演示文稿,看起来不错。
发布于 2014-02-09 11:28:54
http://pierrchen.blogspot.jp/2014/02/what-is-surfaceflinger-in-android.html
SurfaceFlinger是一项安卓系统服务,负责将所有应用程序和系统图面合成到一个缓冲区中,最终由显示控制器显示。
让我们放大上面的语句。
SurfaceFlinger是一个系统范围的服务,但它不能像传感器或其他服务那样直接提供给应用程序开发人员。每次你想要更新你的UI时,SurfaceFlinger都会启动。这就解释了为什么SurfaceFlinger是一个电池耗能器。
除了您的应用程序表面之外,还有系统表面,包括状态栏、导航栏,以及发生旋转时由系统为旋转动画创建的表面。大多数应用程序只有一个活动图面-当前前台活动的图面,当在视图层次结构中使用SurfaceView或使用呈现模式时,其他应用程序有多个。
SurfaceFlinger负责合成所有这些曲面。一个常见的误解是SurfaceFinger是用来绘图的。这是不正确的。绘图是OpenGL的工作。有趣的是,SurfaceFlinger也使用openGL进行合成。
合成结果将放入系统缓冲区或本机窗口中,这是显示控制器从中获取数据的源。这就是您在屏幕上看到的内容。
https://stackoverflow.com/questions/5699107
复制相似问题