Android GWES分析


我这里的GWES这个术语实际上从Microsoft Window上移植过来的,用GWES来表示Android的窗口事件系统不是那么准确,在AndroidWindow是个弱化了的概念,更多的表现在View这个概念上。在很大程度上,AndroidView的概念可以代替Microsoft Window这个概念,有点和Microsof暗中较劲的意味,你用过的概念我就偏不用,这个也是我以为的设计者意图。

 原始GUI基本框架

    首先我们从AndroidSDK外特性空间开始,在编写Actvitiy时,我们都是面对的处理函数:OnXXXX(),例如有按键按下就是OnKeyDown等,在这个过程中系统做了怎样的处理?要详细的理解这个过程,我们就需要理解AndoidView管理,窗口系统,消息系统和输入系统。我们还是从最本质的地方开始,Android作为一种嵌入式的图形用户界面系统,它的基本原理与一般GUI的原理是相同的,同时也是遵循GWES(图形窗口事件系统)的一般规律,总体上Android就是管理用户输入和系统屏幕输出的一个系统。其实GWES这个名称更能体现GUI的基本实质要素:图形、窗口、事件。

1. 一般GUI的基本组成

    GUI的实现就是对上面提到的三个基本要素的管理,根据这这三个要素的特性及其涉及的范围,GUI在总体上可以分为三部分:

  •  事件管理器
  •  窗口管理器
  • GDI(绘制与GDI逻辑对象管理)


(1) 事件管理器

  • 收集系统消息,转换并分发系统消息和用户消息给各个窗口对象。
  • 消息队列管理

(2)窗口管理器:

  • 管理窗口的创建,销毁
  •  窗口的绘制
  •  活动窗口,输入焦点的切换
  •  窗口间关系的管理
  •  控件,菜单实现

3)GDI

  • 上下文设备管理
  • 上下文设备对象管理:字体,画笔等
  •  图形绘制:点、线,填充等
  •  图象操作:位传送、位图操作

系统体系构架及其数据流的大体走向

在本质上GUI就是管理用户输入和屏幕输出,我们从上面的体系结构可以看到GUI的这两大数据流的基本流向,这也决定了Android GWES设计的最基本的着眼点。

Android弱化了窗口的概念,着重使用View的概念。所以Android的基本组成可以从上面的图修改成如下的组成:



   我们要理解Android的消息系统,LooperHandleView等概念还是需要从消息系统的基本原理及其构造这个源头开始。从这个源头,我们才能很清楚的看到Android设计者设计消息系统之意图及其设计的技术路线。

从一般的系统设计来讲,一个消息循环系统的建立需要有以下几个要素:

  •  消息队列
  •  发送消息
  •  消息读取
  • 消息分发
  •  消息循环线程

首先来研究一下消息驱动的基本模型,我使用如下的图形来表示一个消息系统最基本构成:


上面的模型代表应用程序一直查询自己的消息队列,如果有有消息进来,应用消息处理函数中根据消息类型及其参数来作相应的处理。

  • 1
  • 2
  • 3
  • 4
  • 下一页

相关内容