Android内核剖析之Framework概述

柯元旦《Android内核剖析》  第6章Framework概述

框架分为三个主要部分:服务端、客户端、Linux驱动

一、服务端


1.服务端包含两个重要的类分别是:ActivityManagerService(Ams) 和 WindowManagerService(Wms)

Ams管理所有应用程序中的Activity,Wms管理各窗口的叠放次序,隐藏或者显示窗口


2.服务端还包含两个消息处理类:KeyQ 和 InputDispatcherThread

KeyQ类:Wms的内部类,KeyQ对象一旦创建,就立即启动一个线程,该线程不断的读取用户的UI操作信息,比如按键,触摸屏等,并把这些消息放入到一个消息队列QueueEvent
InputDispatcherThread:一旦创建,也会立即启动一个线程,该线程不断的从QueueEvent中取出用户消息,过滤,再将消息发送到当前活动的客户端中


二、客户端

客户端主要包括以下重要类:

ActivityThread

Activity

PhoneWindow

Window

DecorView

ViewRoot

W

WindowManager


三、Linux驱动

Linux和Framework相关的包含两部分:SufaceFilngger和Binder

1.每一个窗口对应一个SurfaceFilngger,它的作用是把各个Surface显示在一个屏幕中

2.Binder的作用是提供跨进程通信。




客户端中的线程

每个有Activity的客户端程序至少包含三个线程:

UI线程

Binder1

Binder2

1.UI线程就是ActivityThread对象

2.每一个Binder对象都对应一个线程。客户端启动后会创建一个ApplicationThread对象(ActivityThread中创建)和一个ViewRoot.W(Activity创建)对象,这两个对象都继承自Binder,因此会创建两个线程,负责接受Linux Binder驱动发送IPC调用。


ApplicationThread负责接受远程Ams的IPC调用。
ViewRoot.W负责接受远程Wms的IPC调用。

这两个Binder对象接受到调用后,通过ActivityThread中的Handler把消息发送到消息队列,UI线程异步从消息队列中取出消息并处理


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值