2017/10/21 学习笔记

来源:互联网 发布:女朋友是双性恋 知乎 编辑:程序博客网 时间:2024/06/04 18:11

学习自http://www.cnblogs.com/samchen2009/p/3364327.html,虽然是13年的文章,但是总结的真的非常棒。

关于GUI系统:

GUI组成部分:ActivityManager,Activity,InputManager,WindowManager,surfaceFlinger

关于窗口:对于Activity来说,是一个抽象类,Activity中最外层的不可见容器,每个Activity中都对应一个Window.

                   对于WindowManagerService来说,对应WindowManagerService中的windowState,它对应着ViewRootImpl中的mWindow,即Activity中的RootView.

                   窗口主要分为:应用程序窗口,即应用自己创建的窗口。第二为子窗口,比如对话框,输入法弹出框。第三为系统窗口,即为Dialog,Toast等。

关于DecorView:之前的学习笔记中提到过DecorView是在Activity的OnCreat阶段通过调用setContentView来调用mWindow的setContentView来创建DecorView,即DecorView为Window下的整个应用的最顶层View。它是FrameLayout的子类,是一个简单的单帧布局。关于我们之前提到过的ViewRoot可以理解为所用通过WindowManager的addView方法来添加的View都可以理解为RootView.


关于WindowManager:接口类,用来管理我们Activity中的窗口。


关于WindowManagerImpl:它是WindowManager的一个实例。


关于WindowManagerGlobal:一个singleton对象,一个应用中只能存在一个实例,在这个类中维护了三个数组,分别是Roots(存储ViewRootImpl),Views(存储ViewRoot),params(存储布局信息), 在WindowManagerGlobal的addView方法比较重要,它会通过ViewRoot创建ViewRootImpl实例,再向三个数组中添加对象,然后再调用ViewRootImpl的setView方法去触发View的绘制。


暂时总结至此,晚上继续。

原创粉丝点击