Window
Android中的 a 是什么?
我以为 Android 中的最顶层叫做Activity
,也就是你看到的屏幕。
谁能告诉我 Android 中的 Window 是什么?我们只有一个还是多个。
Window
Android中的 a 是什么?
我以为 Android 中的最顶层叫做Activity
,也就是你看到的屏幕。
谁能告诉我 Android 中的 Window 是什么?我们只有一个还是多个。
[更新](让我分享我Window
在原始答案后学到的知识)
一句话,A 是一个矩形区域,具有一个视图层次结构。下图中的彩色矩形是窗口。Window
可以看到,一个屏幕可以有多个窗口,由WindowManager管理。当前屏幕的窗口列表可以通过Hierarchy Viewer或adb shell dumpsys window
.
Hierarchy Viewer 示例中的窗口列表:
(以下为原答案)
我也有同样的问题,希望对大家有帮助。
“每个活动都有一个窗口,可以在其中绘制其用户界面。”
并且,Android 框架工程师Dianne Hackborn在这里给出了一些定义。她说,
一个窗口基本上就像你想象的桌面上的一个窗口。它有一个 Surface,其中呈现窗口的内容。应用程序与窗口管理器交互以创建窗口;Window Manager 为每个窗口创建一个 Surface 并将其提供给应用程序进行绘图。应用程序可以在 Surface 中绘制它想要的任何东西;对于窗口管理器,它只是一个不透明的矩形。
Surface是一个对象,其中包含正在合成到屏幕上的像素。你在屏幕上看到的每个窗口(一个对话框、你的全屏活动、状态栏)都有它自己绘制的表面,Surface Flinger 以正确的 Z 顺序将这些渲染到最终显示。一个表面通常有多个缓冲区(通常是两个)来进行双缓冲渲染:应用程序可以绘制它的下一个 UI 状态,而表面抛掷器正在使用最后一个缓冲区合成屏幕,而无需等待应用程序完成绘画。
视图是窗口内的交互式 UI 元素。一个窗口有一个附加的视图层次结构,它提供了窗口的所有行为。每当需要重绘窗口时(例如因为视图本身已失效),都会在窗口的 Surface 中完成。Surface 被锁定,它返回一个可用于在其中绘制的 Canvas。绘制遍历是在层次结构中完成的,将 Canvas 向下传递给每个视图以绘制其 UI 部分。完成后,Surface 被解锁并发布,以便将刚刚绘制的缓冲区交换到前景,然后由 Surface Flinger 合成到屏幕上。
另外,我从Romain Guy的演示文稿中找到了一些其他信息(您可以从这里观看他在旧金山 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
Activity 就是您所说的窗口。
从技术上讲,Activity 为您创建了 Window。
你可以有很多,但通常不是同步的。要询问其他信息,您可以调用 Dialog,或向另一个 Activity 触发 Intent。
欲了解更多信息,请访问此链接。