Framework概述
Framework框架
Framework定义了客户端组件和服务端组件功能及接口。框架中包含三个主要部分,分别为服务端、客户端和Linux驱动。
- 服务端:主要包含两个重要类,分别是WindowManagerService(WmS)和ActivityManagerService(AmS)。WmS的作用是为所有的应用程序分配窗口,并管理这些窗口。包括分配窗口的大小,调节各窗口的叠放次序,隐藏或者显示窗口。AmS的作用是管理所有应用程序中的Activity。
- 客户端:客户端主要包括以下的重要类:
1. ActivityThread:该类为应用程序的主线程类,所有的APK程序都有且仅有一个ActivityThread类,程序的入口为该类中的static main()函数;
2. Activity:该类为APK程序的一个最小运行单元,一个APK程序中可以包含多个Activity对象,ActivityThread主类会根据用户操作选择运行哪个Activity对象;
3. PhoneWindow:该类继承于Window类,同时,PhoneWindow类内部包含了一个DecorView对象。简而言之,PhoneWindow是把一个FrameLayout进行了一定的包装,并提供了一组通用的窗口操作接口;
4. Window:该类提供了一组通用的窗口(Window)操作API,这里的窗口仅仅是程序层面上的,WmS所管理的窗口并不是Window类,而是一个View或者ViewGroup类,一般就是指DecorView类,即一个DecorView就是WmS所管理的一个窗口。Window是一个abstract类型;
5.DecorView:该类是一个FrameLayout的子类,并且是PhoneWindow中的一个内部类。DecorView就是对普通的FrameLayout进行了一定的修饰,比如添加一个通用的Title bar,并响应特定的按键消息等;
6. ViewRoot:WmS管理客户端窗口时,需要通知客户端进行某种操作,这些都是异步消息完成的,实现的方式就是使用Handler,ViewRoot就是继承于Handler,其作用主要就是接收WmS的通知;
7. W类:该类继承于Binder,并且是ViewRoot的一个内部类;
8. WindowManager:客户端要申请创建一个窗口,而具体创建窗口的任务是由WmS完成的,WindowManager类就像是一个部门经理,谁有什么需求就告诉它,由它和WmS进行交互,客户端不能直接和WmS进行交互; - Linux驱动:
Linux驱动和Framework相关的主要包含两部分,分别是SurfaceFlingger(SF)和Binder。每一个窗口都对应一个Surface,SF驱动的作用是把各个Surface显示在同一个屏幕上;
Binder驱动的作用是提供跨进程的消息传递;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-----------------------last line for now---------------------