android graphics surfaceflinger

Android SurfaceFlinger



graphics (3)

SurfaceFlinger no es lo que dibuja su ventana. Asigna un búfer de trama para su ventana, que el marco que se ejecuta en su aplicación se dibuja directamente sin interactuar con SurfaceFlinger. La única interacción de la que SurfaceFlinger está involucrado cuando trazas tu ventana es componer el último búfer de fotogramas en la pantalla una vez que hayas terminado de dibujar un fotograma.

Me gustaría preguntar si SurfaceFlinger siempre se llama para cualquier tipo de dibujo en la pantalla. Ejemplo, visualización del archivo JPG en la pantalla.


Sí, SurfaceFlinger es el compositor de Android, por lo que se necesita todo lo que se mostrará, se da cuenta de cómo se verá el fotograma resultante y luego lo envía para que se muestre en la pantalla a través de la interfaz EGL de la tarjeta gráfica.

Puede tener la idea de que controla el resultado de todo lo que ve en una publicación del desarrollador de Android Jeff Sharkey, donde tiñe toda la pantalla para el modo nocturno . También encontré una presentación de video que se ve bien sobre este tema .


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

SurfaceFlinger es un servicio de sistema de Android, responsable de componer todas las superficies de la aplicación y el sistema en un único búfer que finalmente se mostrará mediante el controlador de pantalla.

Vamos a ampliar la declaración anterior.

SurfaceFlinger es un servicio que abarca todo el sistema, pero no está disponible directamente para el desarrollador de la aplicación, ya que Sensor u otros servicios pueden serlo. Cada vez que desee actualizar su UI, SurfaceFlinger se activará. Esto explica por qué SurfaceFlinger es un escurridor de batería.

Además de las superficies de aplicación, hay superficies del sistema, que incluyen la barra de estado, la barra de navegación y, cuando ocurre la rotación, las superficies creadas por el sistema para la animación de rotación. La mayoría de las aplicaciones tienen solo una superficie activa, la de actividad de primer plano actual, otras tienen más de una cuando se utiliza SurfaceView en la jerarquía de vistas o se utiliza el modo de presentación.

SurfaceFlinger es responsable de COMPOSITAR todas esas superficies. Un malentendido común es que SurfaceFinger es para DIBUJO. No es correcto. El dibujo es el trabajo de OpenGL. Lo interesante es que SurfaceFlinger usó OpenGL para la composición también.

El resultado de la composición se colocará en un búfer del sistema o ventana nativa, que es la fuente para que el controlador de visualización obtenga datos. Esto es lo que ves en la pantalla.