【问题标题】:Android SurfaceFlinger安卓 SurfaceFlinger
【发布时间】:2011-04-18 06:03:49
【问题描述】:

我想问一下,是否总是调用 SurfaceFlinger 来在屏幕上进行任何类型的绘图? 例如,在屏幕上显示 JPG 文件。

【问题讨论】:

    标签: android graphics surfaceflinger


    【解决方案1】:

    SurfaceFlinger 不是 绘制你的窗口的东西。它为您的窗口分配一个帧缓冲区,在您的应用程序中运行的框架直接绘制到该窗口,而不与 SurfaceFlinger 交互。绘制窗口时,SurfaceFlinger 所涉及的唯一交互是在绘制完帧后将最终的新帧缓冲区合成到屏幕上。

    【讨论】:

    • 致 hackbod 和 Frank,感谢您提供的信息。我真的对 SurfaceFlinger 感到困惑。当我查看developer.android.com/guide/topics/graphics/index.html 的 Android 文档时,有两种方法可以将 2D 图形绘制到屏幕上。一个在 View 上,另一个在 SurfaceView 上。我检查了 SurfaceView 的源代码,它似乎实际上是在与 SurfaceFlinger 交互。但是,我还看不到使用视图在画布中绘制的连接。 (例如 ImageView),因为它似乎在调用 SKIA 库。
    • 我认为 android 图形正在从 WindowManager 组件获取表面。 Surface实际上是由SurfaceFlinger创建并由WindowManager管理的。我的理解正确吗?
    • 首先,除非您在平台本身中进行编码,否则您根本不关心 SurfaceFlinger,因此不必担心。普通视图和 SurfaceView 的区别其实和 SurfaceFlinger 无关; SurfaceView 本质上是另一种创建窗口的方式,这种方式附加到 SurfaceView 的视图层次结构的窗口。同样,除非您正在修改平台,否则这对您来说。我真的建议你问关于什么你正在尝试做的问题,而不是事情是如何运作的,这样人们就可以给你有用的答案。
    • 再次感谢您的回复。我现在实际上还没有开发一个 android 应用程序,但我会在不久的将来。我只是想了解事情在 android 中是如何工作的。因为我不仅在研究应用程序框架,而且对库层也很感兴趣。
    • 有时它会释放并重新创建。因此,在同一个应用程序中存在重复的相同 Activity。
    【解决方案2】:

    是的,SurfaceFlinger 是 Android 的合成器,因此它获取所有将要显示的内容,计算出生成的帧的外观,然后将其发送出去,通过显卡的 EGL 接口显示在屏幕上。

    在 Android 开发人员 Jeff Sharkey 的 tints the whole screen for nightmode 的帖子中,您可以了解到它控制您看到的所有内容的结果。我还发现了一个看起来不错的关于 this topic 的投影仪演示文稿。

    【讨论】:

      【解决方案3】:

      http://pierrchen.blogspot.jp/2014/02/what-is-surfaceflinger-in-android.html

      SurfaceFlinger 是一个 Android 系统服务,负责 将所有应用程序和系统表面组合成一个单一的 最终由显示控制器显示的缓冲区。

      让我们放大上面的语句。

      SurfaceFlinger 是一个系统范围的服务,但它不是直接的 作为传感器或其他服务可供应用程序开发人员使用 是。每次你想更新你的 UI 时,SurfaceFlinger 都会启动 中。这解释了为什么 SurfaceFlinger 是电池消耗器。

      除了你的应用表面,还有系统表面, 包括状态栏、导航栏,以及在发生旋转时, 系统为旋转动画创建的曲面。最多 应用程序只有一个活动表面 - 当前的一个 前台活动,当 SurfaceView 为其他活动时,其他活动不止一个 在视图层次结构或演示模式中使用。

      SurfaceFlinger 负责合成所有这些表面。一种 常见的误解是 SurfaceFinger 是用于 DRAWING 的。它是 不正确。绘图是 OpenGL 的工作。有趣的是 SurfaceFlinger 也使用 openGL 进行合成。

      合成结果将被放入系统缓冲区或本地 窗口,这是显示控制器从中获取数据的源。 这就是您在屏幕上看到的内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-24
        • 2017-12-05
        • 1970-01-01
        • 2012-04-08
        相关资源
        最近更新 更多