Activity布局绘制流程(转)

Activity布局绘制流程(转)

这篇文章是承接上一篇文章(Android布局加载流程:android源码解析(十七)–>Activity布局加载流程)来写的,大家都知道Activity在Android体系中扮演者一个界面展示的角色,通过上一篇文章的分析,我们知道Activity是通过Window来控制界面的展示的,一个Window对象就是一个窗口对象,而每个Activity中都有一个相应的Window对象,所以说一个Activity对象也就可以说是一个窗口对象,而Window只是控制着界面布局文件的加载过程,那么界面布局文件的绘制流程是如何的呢?这篇文章主要就是顺着上篇文章的思路,看一下在android系统中Activity的布局文件是如何绘制的。

顺便在这里多说几句,android中所有能显示的东西都是通过Window对象实现了,无论Activity,Dialog,PopupWindow,Toast等。后期我可能也会讲一下Dialog,PopupWindow,Toast等组件的显示过程。

前面有一篇文章中我们介绍过Activity的启动流程,可参考:android源码解析之(十四)–>Activity启动流程
在执行ActivityThread的handleLauncherActivity方法中通过Window对象控制了布局文件的加载流程,而Android体系在执行Activity的onResume方法之前会回调ActivityThread的handleResumeActivity方法:

Activity布局加载流程(转)

Activity布局加载流程(转)

好吧,终于要开始讲讲Activity的布局加载流程了,大家都知道在Android体系中Activity扮演了一个界面展示的角色,这也是它与android中另外一个很重要的组件Service最大的不同,但是这个展示的界面的功能是Activity直接控制的么?界面的布局文件是如何加载到内存并被Activity管理的?android中的View是一个怎样的概念?加载到内存中的布局文件是如何绘制出来的?

要想回答这些问题,我们就需要对android的界面加载与绘制流程有所了解,这里我们先来学习一下Activity的布局加载的流程。而至于Acitivty的布局绘制流程我们在下一篇中在做介绍。

其实Activity对界面布局的管理是都是通过Window对象来实现的,Window对象,顾名思义就是一个窗口对象,而Activity从用户角度就是一个个的窗口实例,因此不难想象每个Activity中都对应着一个Window对象,而这个Window对象就是负责加载显示界面的。至于window对象是如何展示不同的界面的,那是通过定义不同的View组件实现不同的界面展示。

废话不多说了,不知道大家是否还记得我们讲过的Activity的启动流程么?不熟悉的童鞋可以参考: android源码解析之(十四)–>Activity启动流程 ,在文章中我们介绍到当ActivityManagerService接收到启动Activity的请求之后会通过IApplicationThread进程间通讯告知ApplicationThread并执行handleLauncherActivity方法,这里我们可以下其具体实现:


:D 一言句子获取中...