GUI原理笔记

主要组成部分:

  1. 窗口和图形系统 - Window and View Manager System.
  2. 显示合成系统 - Surface Flinger
  3. 用户输入系统 - InputManager System
  4. 应用框架系统 - Activity Manager System.

此处应先该概括Android的启动流程:

这里写图片描述

其中,第一次进入Java世界,运行ZygoteInit.java::main() 函数初始化Zygote. Zygote 并创建Socket的server 端,Zygote监听服务端Socket,等待新的应用启动请求,一个新的应用被fork完后,第一个调用的方法就是 ActivityThread的main(),这个函数主要做的事情就是创建一个ActivityThread线程,然后调用loop()开始等待。当收到来自 ActivityManager 的 LAUNCH_ACTIVITY 消息后,Activity开始了他的显示之旅

一 窗口管理系统
Android中与跟窗口管理相关(不包括显示和按键处理)主要有两个进程,Acitivty所在进程 和 WndowManagerService 所在进程(SystemServer). Activity进程负责窗口内View的管理,而WindowManager Service 管理来自与不同Acitivity以及系统的的窗口,
WMS会生成一个SurfaceController,ViewRootImpl和这个Controller会生成Window对应的Surface,通过这个对象,Canvas 可以要求Surface Flinger 分配OpenGL绘图用的Buffer。

invalidate 原理: 在绘制的时候有个缓存DisplayList,函数invalidate()从当前View 出发,向上遍历找到View Tree中所有Dirty的 View 和 ViewGroup, 根据需要重新生成DisplayList, 并在drawDisplayList() 函数里执行OpenGL命令将其绘制在某个Surface Buffer上。

三 用户输入系统

共涉及一下模块:
1.Input Reader: 负责从硬件获取输入,转换成事件(Event), 并分发给Input Dispatcher.
2.Input Dispatcher: 将Input Reader传送过来的Events 分发给合适的窗口,并监控ANR。
3.Input Manager Service: 负责Input Reader 和 Input Dispatchor的创建,并提供Policy 用于Events的预处理。
4.Window Manager Service:管理Input Manager 与 View(Window) 以及 ActivityManager 之间的通信。
5.View and Activity:接收按键并处理。
6.ActivityManager Service:ANR 处理。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值