Android4.4 Framework分析——Activity窗口的创设过程(一)

Android4.4 Framework分析——Activity窗口的创建过程(一)

学习android的窗口模块一周多了,感觉自己对这个模块的理解还是比较模糊,先把get的知识点记录一下。

下图是学习过程记录的activity窗口启动过程序列图,没有或者没办法完整的描绘出来,整个过程比较复杂:

Android4.4 Framework分析——Activity窗口的创设过程(一)

整个学习过程中是参照老罗的android之旅博客和《深入理解android内核设计思想》一书来辅助的,非常感谢前辈。

Activity的整体启动过程可查看Android4.4 framework分析——Launcher中启动应用程序(startActivity)的过程 的序列图,本文关注Activity窗口创建细节部分(也许不够细)。

step3~step13,是Activity上下文Context的创建过程,Activity本身是Context的间接子类,而此处创建的ContextImpl与它们的关系,可查看Android与设计模式——装饰者(Decorator)模式一文。step3~step13的详细分析,建议查看老罗的Android应用程序窗口(Activity)的运行上下文环境(Context)的创建过程分析 ,这篇文章写的比较详细。

step14~step16,是PhoneWindow的创建,我们标题提到的Activity窗口其实就是这个,所有的View都是在这window上建立起来的。

step19~step22,是WindowManager的创建过程。

step24~step33,是DecorView的创建过程,这个DecorView后面会被add到PhoneWindow里。

step40~step42,XXXActivity的onResume()的调用过程,标志着这个activity要被显示出来了。

step47,开始将窗口添加到WMS中。

step50,ViewRootImpl创建了。

step51~step57,将window与WMS关联起来了,WMS中将会记录这个window的相关信息。

step63,将逐步将我们在xml文件中的布局添加到ViewRootImpl中。


后面会用SurfaceFlinger来关联Surface之类的,这部分C++代码不太理解,整个过程有不少地方需要加深理解,继续啃代码。。。。


右键复制图片地址,在浏览器中打开即可查看大图。

未完待续,有不对的地方,请指正。