歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android GWES分析

Android GWES分析

日期:2017/3/1 11:15:57   编辑:Linux編程

我這裡的GWES這個術語實際上從Microsoft 的Window上移植過來的,用GWES來表示Android的窗口事件系統不是那麼准確,在Android中Window是個弱化了的概念,更多的表現在View這個概念上。在很大程度上,Android的View的概念可以代替Microsoft Window這個概念,有點和Microsof暗中較勁的意味,你用過的概念我就偏不用,這個也是我以為的設計者意圖。

原始GUI基本框架

首先我們從Android的SDK外特性空間開始,在編寫Actvitiy時,我們都是面對的處理函數:OnXXXX(),例如有按鍵按下就是OnKeyDown等,在這個過程中系統做了怎樣的處理?要詳細的理解這個過程,我們就需要理解Andoid的View管理,窗口系統,消息系統和輸入系統。我們還是從最本質的地方開始,Android作為一種嵌入式的圖形用戶界面系統,它的基本原理與一般GUI的原理是相同的,同時也是遵循GWES(圖形窗口事件系統)的一般規律,總體上Android就是管理用戶輸入和系統屏幕輸出的一個系統。其實GWES這個名稱更能體現GUI的基本實質要素:圖形、窗口、事件。

1. 一般GUI的基本組成

GUI的實現就是對上面提到的三個基本要素的管理,根據這這三個要素的特性及其涉及的范圍,GUI在總體上可以分為三部分:

  • 事件管理器
  • 窗口管理器
  • GDI(繪制與GDI邏輯對象管理)


(1) 事件管理器

  • 收集系統消息,轉換並分發系統消息和用戶消息給各個窗口對象。
  • 消息隊列管理

(2)窗口管理器:

  • 管理窗口的創建,銷毀
  • 窗口的繪制
  • 活動窗口,輸入焦點的切換
  • 窗口間關系的管理
  • 控件,菜單實現

(3)GDI

  • 上下文設備管理
  • 上下文設備對象管理:字體,畫筆等
  • 圖形繪制:點、線,填充等
  • 圖象操作:位傳送、位圖操作

2 系統體系構架及其數據流的大體走向

在本質上GUI就是管理用戶輸入和屏幕輸出,我們從上面的體系結構可以看到GUI的這兩大數據流的基本流向,這也決定了Android GWES設計的最基本的著眼點。

Android弱化了窗口的概念,著重使用View的概念。所以Android的基本組成可以從上面的圖修改成如下的組成:



我們要理解Android的消息系統,Looper,Handle,View等概念還是需要從消息系統的基本原理及其構造這個源頭開始。從這個源頭,我們才能很清楚的看到Android設計者設計消息系統之意圖及其設計的技術路線。

從一般的系統設計來講,一個消息循環系統的建立需要有以下幾個要素:

  • 消息隊列
  • 發送消息
  • 消息讀取
  • 消息分發
  • 消息循環線程

首先來研究一下消息驅動的基本模型,我使用如下的圖形來表示一個消息系統最基本構成:


上面的模型代表應用程序一直查詢自己的消息隊列,如果有有消息進來,應用消息處理函數中根據消息類型及其參數來作相應的處理。

Copyright © Linux教程網 All Rights Reserved