您的位置:首页 > 产品设计 > UI/UE

GUI原理笔记

2016-09-30 21:45 106 查看
主要组成部分:

窗口和图形系统 - Window and View Manager System.

显示合成系统 - Surface Flinger

用户输入系统 - InputManager System

应用框架系统 - 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 处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: