Що таке Window
Android?
Я думав Activity
, що називається найвищий рівень в Android , тобто екран, який ви бачите.
Хтось може сказати мені, що таке Вікно в Android? чи є у нас просто один або декілька з них.
Що таке Window
Android?
Я думав Activity
, що називається найвищий рівень в Android , тобто екран, який ви бачите.
Хтось може сказати мені, що таке Вікно в Android? чи є у нас просто один або декілька з них.
Відповіді:
Діяльність - це те, що ви б назвали вікном.
Технічно кажучи, Діяльність створює для Вас Вікно.
Ви можете їх мати багато, але зазвичай не синхронно. Щоб попросити додаткової інформації, ви можете зателефонувати у діалогове вікно або активувати інтенцію.
Для отримання додаткової інформації відвідайте це посилання .
[ОНОВЛЕННЯ] (Дозвольте мені поділитися тим, про що я дізнався Window
після оригінальної відповіді)
В одному реченні A - це прямокутна область, яка має одну ієрархію подання . Кольорові прямокутники на зображенні нижче - це вікна.Window
Як бачите, на одному екрані може бути кілька вікон, і WindowManager керує ними. Список вікон на поточному екрані можна отримати за допомогою Hierarchy Viewer , або adb shell dumpsys window
.
Список вікон у прикладі засобу перегляду ієрархій:
(Нижче оригінальна відповідь)
У мене було таке саме запитання, і я сподіваюся, це могло б допомогти вам, хлопці.
Відповідно до документації розробника Android ,
"Кожній діяльності надається вікно, в якому можна намалювати свій користувальницький інтерфейс."
і, Дайанн Хакборн , яка є інженером фреймворків Android, дала тут деякі визначення . Вона сказала,
Вікно в основному схоже на те, що ви думаєте про вікно на робочому столі. Він має єдину Поверхня, на якій відображається вміст вікна. Додаток взаємодіє з менеджером вікон для створення вікон; Менеджер вікон створює поверхню для кожного вікна і передає її програмі для малювання. Додаток може намалювати в Surface все, що хоче; для Менеджера вікон це просто непрозорий прямокутник.
Поверхня - це об’єкт, що містить пікселі, які компонуються на екран . Кожне вікно, яке ви бачите на екрані (діалогове вікно, ваші повноекранні дії, рядок стану), має власну поверхню, на яку воно втягується, і Surface Flinger надає їх на кінцевий дисплей у правильному Z-порядку. Поверхня, як правило, має більше одного буфера (як правило, два) для виконання подвійного буферизованого рендерингу: додаток може малювати свій наступний стан інтерфейсу, поки поверхневий інструмент компонування екрану компонує останній буфер, не потрібно чекати закінчення програми малювання.
Вид - це інтерактивний елемент інтерфейсу всередині вікна. До вікна приєднана єдина ієрархія подання, яка забезпечує всю поведінку вікна. Кожного разу, коли вікно потрібно перемалювати (наприклад, через те, що подання зневажило себе), це робиться у Поверхні вікна . Поверхня заблокована, що повертає полотно, за допомогою якого можна намалювати. Обіг малювання виконується вниз по ієрархії, подаючи полотно вниз для кожного подання, щоб намалювати його частину інтерфейсу. Після цього Surface розблокується та розміщується, так що щойно намальований буфер поміняється на передній план, а потім буде компонований на екран 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