Android Framework框架

Framework定义了客户端组件和服务器端组件功能及接口,包含3个部分:服务端、客户端和linux驱动

Android <wbr>Framework框架

(一) 服务端

              服务端主要包含两个重要类,分别是WindowManagerService(WmS)和ActivityManagerService(AmS).wms的作用是为所有的应用程序分配窗口,并管理这些窗口。包括分配窗口的大小、叠放个窗口的叠放次序、隐藏或显示窗口。

AmS的作用是管理所有应用程序中的Activity。

     除此之外,在服务端还包括2个信息处理类:

     1 KeyQ类:该类为wms的内部类,继承于keyinputQueue类,keyQ对象一旦创建,就立即启动一个线程,该线程会不断地读取用户的ui操作消息,比如按键、触摸屏、trackball、鼠标等。并把这些消息放到一个消息队列QueueEvent类中。

     2 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类,即一个D而从容View就是wms所有管理的一个窗口,window是一个abstact类型。

         5 DecorView类

该类是一个FrameLayout的子类,并且是PhoneWindow的一个内部类,DecorView就是对普通的FrameLayout进行了一定的修饰,比如添加一个通用的TitleBar,并响应特定的按钮消息等。

       6 ViewRoot类:

 Wms管理客户端窗口时,需要通知客户端进行某种操作,这些都是通过异步消息完成的,实现方式就是使用handler,viewRoot就是继承与handler,其主要作用就是就接手wms的通知。

        7 w类:

  该类继承于Binder,并且是一个viewRoot的一个内部类。

        8 windowManager类:

      客户端要申请创建一个窗口,而具体创建窗口的任务是有wms完成的,windowManager类就像是一个部门经理,谁有什么需求就告诉他,由它和wms进行交互,客户端不能直接和wms进行交互。

(三)Linux驱动

       Linux驱动和Framework相关的主要包含两个部分,分别是surfaceFlingger和Binder,每一个窗口都对应一个Surface,sf驱动的作用就是把各个surface显示在同一个屏幕上。

      Binder驱动的作用是提供框进程 ipc 的消息传递机制。

 

posted @ 2015-04-21 14:24  大大的海棠湾  阅读(383)  评论(0)    收藏  举报