6.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
    • 提供进程间的消息传递
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 讨厌冬天又冷又干的风。 手冻得更厉害了。 明天早起忙活,为了生存。 每到过年家里就不愉快。必然有一方不高兴。 今天...
    乌冬乌冬阅读 1,724评论 0 0
  • 断桥乱语,杨花独舞,总待春来相住。 沈家园里恨深深,到今日,愁肠难诉。 钗头凤坠,万年春碎,自古多情难渡。 雕粱双...
    白溪禅阅读 3,462评论 2 8
  • 关于爱情的文字很多,莎翁的最朴实:“真实爱情的途径并不平坦。”经历过才会明白吧,今天整理了另外五部珍藏的爱情电影分...
    港岛小羊阅读 5,560评论 2 6
  • 在等待中插上希望的翅膀 在等待中追寻你的印象 在等待中收获芬芳 从此幸福绵长 从此停泊此方 从此~~~幸福~`地老...
    东京的妖阅读 2,860评论 0 4

友情链接更多精彩内容