Framework概述

Framework概述

Framework框架

框架包含三部分:

  • 服务端
  • 客户端
  • Linux驱动

服务端

服务端只要包含了两个重要的类

  • WindowManagerService(WmS)
    • 负责各窗口的叠放次序,隐藏或者显示窗口
  • ActivityManagerService(AmS)
    • 负责管理Activity

除了这两个重要的类之外,还有两个类很重要

  • KeyQ
    • WmS的内部类,继承于KeyInputQueue类
    • 创建之后,立刻启动一个线程,不断的读取用户UI操作消息,并将这些消息放到消息队列(QueueEvent的实例)中
  • InputDispatcherThread
    • 对象创建之后,不停的从消息队列(QueueEvent的实例)中取出消息,经过自己的过滤之后,派发到当前活动的客户端程序中

客户端

主要包含以下类:

  • ActivityThread类:应用程序的主线程类,所有的App都拥有一个这样的类。该类的程序入口是 static main() 函数。ActivityThread所在的线程为UI线程。
  • Activity类:为APK运行的最小单元,由用户的选择之后,ActivityThread来启动和切换。
  • PhoneWindow类:
    • 继承于Window类
    • 包含了一个DecorView
    • 提供了一组通用窗口操作API
  • Window类
    • 提供了一组通用窗口操作API
    • Window是一个抽象类
    • **注意:**WmS管理的是View或ViewGroup,并不是直接管理Window类
  • DecorView类
    • 继承于FrameLayout
    • 装饰类(decoretion),对FrameLayout进行了装饰,添加了TitleBar,按键响应等
  • ViewRoot类
    • 继承自Handler类,作用是,当WmS发生IPC调用时,将调用转成一个本地的异步调用。
    • WmS管理客户端窗口时,需要通知客户端进行某种操作。这些操作是通过IPC来完成的。
  • W类
    • 继承于IBinder,是ViewRoot的内部类。WmS发生IPC调用时,就是调用本Binder类。
    • 本Binder类将收到的IPC调用,包装成Handle的消息,发送出去,以便进行异步处理。
  • WindowManager类
    • 客户端需要添加一个窗口,但是窗口是由WmS来管理的。客户端不能直接和WmS交互,由WindowManger来负责和WmS的交互。

Linux驱动

Linux驱动和FrameWork相关的有两部分

  • SurfaceFlinger
    • 每一个窗口都有一个surface
    • SurfaceFlinger将这些surface显示到一个屏幕上
  • Binder
    • 提供进程间的消息传递
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值