本章主要是介绍其中的应用框架层(Application Framework),前面的章节已经提到android是基于多进程设计的,先看看如下手稿图(mac下没找到顺手的UML画图工具),其类名基于4.2.2版本:
从上图中可以看出,核心包括了3+X个进程:
-
servicemanager守护进程:系统启动时自动启动,通过init.rc设置,主要用来加载binder驱动,实现SystemServer与APP进程之间的消息传递,进而实现IPC中转调用;
-
surfaceflinger守护进程:系统启动时自动启动,通过init.rc设置,他也是一个驱动,每个窗口都对应一个Surface,该驱动的作用就是把各个Surface显示在同一个屏幕上;
-
SystemServer进程:该进程是zygote孵化出的第一个进程(详见第9章的描述),可以理解为应用框架的服务端,用来提供各种系统服务,核心的包括窗口管理服务WindowManagerService、活动管理服务ActivityManagerService等;
-
IActivityManager:管理所有应用程序中的Activity,其实现类是ActivityManagerService;当前台应用APP需要启动某个Activity时,需要先通过binder机制请求IActivityManager,OK之后再回调APP进程中的ActivityThread.ApplicationThread进行真正的Activity加载;
-
IWindowManager:定义应用窗口各种操作的接口,其实现类是WindowManagerService,基于Binder框架实现各窗口的叠放次序、隐藏或显示;当系统接收到按键或触控事件之后驱动会中转到WindowManagerService,之后他回调APP进程中的PhoneWindow.W实现对各类消息的分发;
-
IWindo