Android Framework

Framework 定义了客户端组件和服务端组件功能及接口。(包括:服务端、客户端、Linux驱动)异步

服务端:函数

WindowManagerService(Wms):为全部应用程序分配窗口和管理窗口。spa

ActivityManagerService(Ams):全部管理应用程序中的Activity。线程

消息处理类:对象

KeyQ:是Wms的内部类,继承于KeyInputQueue类,KeyQ对象一旦建立,就当即启动一个线程,该线程会不断地读取用户的UI操做消息,好比按键、触摸屏、trackball、鼠标等,并把这些消息放到一个消息队列QueueEvent类中。继承

InputDispatcherThread类:该类的对象一旦建立,也会当即启动一个线程,该线程会不断地从QueueEvent中取出用户消息,并进行必定的过滤(用Wms中相应函数处理),过滤后,再将这些消息发给当前活动的客户端程序中。接口

客户端主要包括如下重要类:队列

    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中的一个内部类。Decor的英文是Decoration, 即“修饰”的意思,DecorView就是对普通的FrameLayout进行了必定的修饰,好比添加一个通用的TitleBar, 并响应特定的按键消息等。

    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驱动的做用是提供跨进程(IPC)的消息传递机制。

相关文章
相关标签/搜索