1. 程式人生 > >android 界面顯示過程分析

android 界面顯示過程分析

2d繪圖 produce play str 開發 rap 消費者 sum 合數

android 系統提供了一系列的繪圖渲染api,這些api支持2D繪圖和3D繪圖;那麽理解這些api是如何工作的,還是十分重要的。應用開發者最常用的就是Canvas和OpenGL,Canvas側重於2D,而OpenGL則是全能。Canvas的繪圖操作最終會通過OpenGLRender進行轉換,轉換為OpenGL支持的動作,並由GPU渲染;也就是說Canvas也是通過OpenGL庫工作的。

無論你使用哪種api,這些操作最終還是會渲染到Surface上。Surface代表了生產者,負責生產BufferQueue;與它對立的是作為消費者的SurfaceFlinger。

下面的圖講述了主要部件的工作流程。

技術分享圖片

Image Stream Producers

圖像生產者:任何生成graphics buffer的組件,包括但不限於Canvas,OpenGL,多媒體服務,視頻解碼器。

Image Stream Consumers

圖像消費者: 這個圖像流消費者一般指的是SurfaceFlinger系統服務,SurfaceFlinger負責組織可視Surface,並修改Display,只有SurfaceFlinger可修改DisPlay。OpenGL ES app比如相機程序,carmera也可以消耗圖像流。

Window Manager

負責管理系統中的Window,Window manager由Surface支持實現,Window Manager將元數據發動到SurfaceFlinger。

Hardware Composer

用來展示子系統的硬件抽象層,SurfaceFlinger可以幫助OpenGL 和GPU做已經明確的,組合數據的工作,這樣就能減輕GPU和OpenGL的工作,這樣會更省資源和電量。SurfaceFlinger工作還是利用OpenGL ES,相當於OpenGL ES 客戶端。

Gralloc

graphics memory allocator 繪制內存生成器

android 界面顯示過程分析