Activity是Android图形系统中非常重要的组成部分。图形系统客户端——Android应用程序的多数功能都是通过Activity实现的。上图展示了Activity类的构成,Activity主要由Window(phoneWindow的抽象基类)和WindowManager两部分构成。Window主要负责Activity的窗口视图,而WindowManager则主要负责与WmS交互。
在这篇博客中,我不打算详细深入窗口视图的实现或者WmS的细节,而是比较宏观的梳理一下Activity的脉络。
DecorView
DecorView是Activity的根视图,从上图可以看出DecorView继承与ViewGroup。而ViewGroup的结构是大家都比较熟悉的,如下图所示。这种递归包含的方式,实现了Android应用程序界面的树形结构表示。DecorView作为这棵“树”的根,在用户消息传递以及图形绘制过程中都发挥着重要的作用。
ViewRoot
ViewRoot类主要负责实现应用程序WmS的交互,ViewRoot内部的W类是Binder的子类。Binder即实现了应用程序进程与WmS进程之间的IPC通信。举例说来,应用程序新建或删除窗口、WmS通知Activity调整大小(输入法窗口出现)等等情况都需要这种进程间通信。
总结说来,Activity实现了图形客户端最重要的两个功能——界面表示和界面控制。在Activity中,界面被表示为一个树形结构,而通过ViewRoot(最终还是Binder)实现了与WmS的交互。
发表评论