Что такое окно Android?
Что такое Window
в Android?
Я думал, что самый верхний уровень в Android называется Activity
, который является экраном, который вы видите.
Может кто-нибудь сказать мне, что такое окно в Android? у нас есть только один или несколько из них.
4 ответа
Активность - это то, что вы бы назвали окном.
С технической точки зрения, Деятельность создает Окно для вас.
Их может быть много, но обычно не синхронно. Чтобы запросить дополнительную информацию, вы можете позвонить в диалог или запустить намерение для другого действия.
Для получения дополнительной информации посетите эту ссылку.
[ОБНОВЛЕНИЕ] (Позвольте мне поделиться тем, что я узнал о Window
после оригинального ответа)
В одном предложении А Window
прямоугольная область, которая имеет одну иерархию представлений. Цветные прямоугольники на изображении ниже являются окнами.
Как видите, на одном экране может быть несколько окон, и WindowManager управляет ими. Список окон на текущем экране можно получить с помощью средства просмотра иерархии или adb shell dumpsys window
,
Список окон в примере HierarchyViewer:
(Ниже оригинальный ответ)
У меня был тот же вопрос, и я надеюсь, что это поможет вам, ребята.
Согласно документации разработчика Android,
"Каждому действию дается окно, в котором можно нарисовать свой пользовательский интерфейс".
и Дайан Хэкборн, которая является инженером фреймворка Android, дала здесь некоторые определения. Она сказала,
Окно в основном похоже на окно на рабочем столе. Он имеет единственную поверхность, в которой отображается содержимое окна. Приложение взаимодействует с диспетчером окон для создания окон; Менеджер окон создает поверхность для каждого окна и передает ее приложению для рисования. Приложение может рисовать все что угодно в Surface; для оконного менеджера это просто непрозрачный прямоугольник.
Поверхность - это объект, содержащий пиксели, которые компонуются на экране. Каждое окно, которое вы видите на экране (диалоговое окно, ваша полноэкранная активность, строка состояния), имеет свою собственную поверхность, к которой оно обращается, и Surface Flinger отображает их на конечном экране в правильном Z-порядке. Поверхность, как правило, имеет более одного буфера (обычно два) для рендеринга с двойной буферизацией: приложение может рисовать свое следующее состояние пользовательского интерфейса, в то время как бегунок поверхности создает экран, используя последний буфер, без необходимости ждать завершения приложения. Рисунок.
Вид - это интерактивный элемент пользовательского интерфейса внутри окна. К окну прикреплена единая иерархия представления, которая обеспечивает все поведение окна. Всякий раз, когда окно необходимо перерисовать (например, из-за того, что представление аннулировало себя), это делается в Поверхность окна. Поверхность заблокирована, что возвращает холст, который можно использовать для рисования в нем. Обход рисования выполняется по иерархии, передавая холст для каждого представления, чтобы нарисовать свою часть пользовательского интерфейса. После этого Поверхность разблокируется и размещается так, что только что нарисованный буфер переключается на передний план, чтобы затем скомпоновать его с экраном с помощью Surface Flinger.
Кроме того, я нашел некоторую другую информацию из презентации Ромена Гая ( отсюда его выступление в группе пользователей Android в Сан-Франциско и его полные слайды можно посмотреть здесь)
Итак, в двух словах:
-
Activity
имеет окно (в котором он рисует свой пользовательский интерфейс), -
Window
имеет одинSurface
и единственная иерархия представления, прикрепленная к нему, -
Surface
включаютViewGroup
который держит взгляды.
Я хотел бы сказать вкратце:
Application --->
Activity --->
Window Manager --->
Window --->
Surface --->
Canvas --->
View Root --->
View Group --->
View --->
Bitmap/Open GL panel --->
Current Surface Buffer --->
Surface Flinger --->
Screen