Подтвердить что ты не робот

Android SurfaceFlinger

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

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

Позвольте увеличить изображение выше.

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

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

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

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