Что такое окно Android? - PullRequest
       35

Что такое окно Android?

63 голосов
/ 26 февраля 2012

Что такое Window в Android?

Я думал, что самый верхний уровень в Android называется Activity, то есть экран, который вы видите.

Может кто-нибудь сказать мнечто такое окно в Android?у нас есть только один или несколько из них.

Ответы [ 4 ]

152 голосов
/ 07 мая 2013

[ОБНОВЛЕНИЕ] (Позвольте мне поделиться тем, что я узнал о Window после первоначального ответа)

В одном предложении A Window - это прямоугольная область с одной иерархией видов , Цветные прямоугольники на изображении ниже - это окна.

enter image description here

Как видите, на одном экране может быть несколько окон, и WindowManager управляет ими. Список окон на текущем экране можно получить с помощью Hierarchy Viewer или adb shell dumpsys window.

Список окон в примере просмотра иерархии: enter image description here

(ниже оригинальный ответ)


У меня был тот же вопрос, и я надеюсь, что это поможет вам, ребята.

Согласно Документация для разработчиков Android ,

«Каждому виду деятельности предоставляется окно для рисования его пользовательского интерфейса.»

и, Дайан Хэкборн , инженер по фреймворку Android, дала несколько определений здесь . Она сказала,

Окно в основном похоже на окно на рабочем столе. Он имеет одну поверхность , в которой отображается содержимое окна. Приложение взаимодействует с диспетчером окон для создания окон; Диспетчер окон создает поверхность для каждого окна и передает ее приложению для рисования. Приложение может рисовать все что угодно в Surface; для оконного менеджера это просто непрозрачный прямоугольник.

Поверхность - это объект , содержащий пиксели, которые скомпонованы на экране . Каждое окно, которое вы видите на экране (диалоговое окно, ваша полноэкранная активность, строка состояния), имеет свою собственную поверхность, к которой оно обращается, и Surface Flinger отображает их на конечном экране в правильном Z-порядке. Поверхность, как правило, имеет более одного буфера (обычно два) для рендеринга с двойной буферизацией: приложение может рисовать свое следующее состояние пользовательского интерфейса, в то время как бегунок поверхности создает экран, используя последний буфер, без необходимости ждать завершения приложения. рисунок.

Вид - это интерактивный элемент пользовательского интерфейса внутри окна. К окну прикреплена отдельная иерархия представления, , которая обеспечивает все поведение окна. Всякий раз, когда необходимо перерисовать окно (например, из-за того, что представление само себя аннулировало), это делается в Поверхность окна . Поверхность заблокирована, что возвращает холст, который можно использовать для рисования в нем. Обход рисования выполняется по иерархии, передавая холст для каждого представления, чтобы нарисовать свою часть пользовательского интерфейса. После этого Поверхность разблокируется и размещается так, что только что нарисованный буфер переключается на передний план, чтобы затем можно было скомпоновать его на экране с помощью Surface Flinger.

Кроме того, я нашел другую информацию из презентации Romain Guy (Вы можете посмотреть его выступление в группе пользователей Android в Сан-Франциско из здесь и загрузить полные слайды из здесь )

enter image description here

Итак, в двух словах:

  • У Activity есть окно (в котором он рисует свой пользовательский интерфейс),
  • a Window имеет одну Surface и одну иерархию представлений,
  • a Surface включает ViewGroup, который содержит представления.
13 голосов
/ 15 ноября 2017

Я хотел бы сказать вкратце:

Application --->
  Activity --->
    Window Manager --->
      Window --->
        Surface ---> 
          Canvas --->
            View Root ---> 
              View Group --->
                View ---> 
                  Bitmap/Open GL panel ---> 
                    Current Surface Buffer ---> 
                      Surface Flinger --->
                        Screen
12 голосов
/ 21 июля 2016

Android: Window, Surface, Canvas, and Bitmap Вот очень простой и простой концептуальный обзор того, как происходит взаимодействие между окном, поверхностью, холстом и растровым изображением.

8 голосов
/ 26 февраля 2012

Упражнение - это то, что вы бы назвали Окном.

Технически говоря, Упражнение создает Окно для вас.

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

Для получения дополнительной информации перейдите по этой ссылке .

...