Android SurfaceFlinger

Я просто хотел бы спросить, всегда ли SurfaceFlinger вызывается для любого типа рисования на экране? Пример: отображение файла JPG на экране.

Solutions Collecting From Web of "Android SurfaceFlinger"

SurfaceFlinger не то, что рисует ваше окно. Он выделяет буфер кадра для вашего окна, к которому фреймворк, запущенный в вашем приложении, обращается напрямую, не взаимодействуя с SurfaceFlinger. Единственное взаимодействие SurfaceFlinger связано с тем, когда вы нарисовываете свое окно, чтобы скомпоновать последний буфер нового кадра на экран, как только вы закончите рисовать кадр.

Да, SurfaceFlinger – это композитор от Android, поэтому он получает все, что будет отображаться, и выяснит, как будет выглядеть результирующий кадр, а затем отправит его на экран с помощью интерфейса EGL графической карты.

Вы можете понять, что он контролирует результат всего, что вы видите в сообщении разработчика Android Джеффа Шарки, где он оттеняет весь экран для ночного режима . Я также нашел презентацию лучей, которая хорошо разбирается в этой теме .

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

SurfaceFlinger является системным сервисом Android, который отвечает за компоновку всех поверхностей приложений и систем в один буфер, который, наконец, будет отображаться контроллером дисплея.

Давайте увеличим выражение выше.

SurfaceFlinger – это системный сервис, но он не доступен непосредственно разработчику приложений, поскольку Sensor или другие сервисы могут быть. Каждый раз, когда вы хотите обновить свой пользовательский интерфейс, SurfaceFlinger начнет работать. Это объясняет, почему SurfaceFlinger – это сливной аккумулятор.

Помимо поверхностей вашего приложения, есть системные поверхности, в том числе строка состояния, панель навигации и, когда происходит поворот, поверхности, созданные системой для анимации вращения. Большинство приложений имеют только одну активную поверхность – текущую переднюю активность, другие – более одного, когда SurfaceView используется в иерархии представлений или используется режим презентации.

SurfaceFlinger отвечает за СОСТАВЛЕНИЕ всех этих поверхностей. Общее недоразумение заключается в том, что SurfaceFinger предназначен для ЧЕРТЕЖЕЙ. Это неверно. Рисование – это работа OpenGL. Интересно, что SurfaceFlinger использовал openGL для композитинга.

Результат композиции будет помещен в системный буфер или собственное окно, которое является источником для контроллера отображения для извлечения данных. Это то, что вы видите на экране.