阿里技術協會好文推薦:Android繪製流程

1、前言

1.一、C++界面庫

  MFC、WTL、DuiLib、QT、Skia、OpenGL。
Android裏面的畫圖分爲2D和3D兩種: 2D是由Skia 來實現的,3D部分是由OpenGL實現的。socket

1.二、Android基本概念

  • 窗口ui

      對用戶來講, 窗口就是手機屏幕, 包括下面的那些home、back按鍵、狀態欄等。對於Activity來講, 窗口就是除系統狀態欄和系統按鍵的屏幕區域, 有window之類的概念。對於wms來講, 它沒有什麼窗口的概念, 它能接受的只是一個個view而已。也就是Activity這裏還有Window這個概念, 但在wms那裏, 已經沒有window的概念了。
    窗口類型分爲應用程序窗口: 就是通常應用程序的窗口, 好比咱們應用程序的Activity的窗口。子窗口: 通常在Activity裏面的窗口, 好比TabActivity。系統窗口: 系統的窗口, 好比輸入法、Toast、牆紙等等…系統窗口不須要對應任何Activity, 也不須要有父窗口, 對於應用程序而言, 理論上是沒法建立系統窗口的, 由於全部的應用程序都沒有這個權限, 然而系統進程卻能夠建立系統窗口。WindowManager.LayoutParams裏面有關於各類窗口的type類型定義, type還有個含義就是窗口的z-order, 值越大, 顯示的位置越在上面。spa

  • Window、PhoneWindow代理

      頂層窗口樣式和行爲的抽象類, 歸納了Android窗口的基本屬性和基本功能。該類實例的getDecorView()方法返回的DecorView被用來做爲頂層視圖添加到WM中。
    建立時機: ActivityThread.handleLaunchActivity ---> ActivityThread.performLaunchActivity --->Activity.attachorm

  • WindowManager、WindowManagerImpl、WindowManagerGlobal對象

      與一個特定的Display相關聯, WindowManager主要用來管理窗口的一些狀態、屬性、view增長、刪除、更新、窗口順序、消息收集和處理等。它面向的對象一端是屏幕, 另外一端就是 view , 直接忽略咱們之前的 Activity 或者 Dialog 之類的東東。WindowManager是一個接口類, 其真正的實現是WindowManagerImpl, 後者同時也是整個應用程序中全部Window的管理者。接口

  • Activity進程

      Activity是支持顯示UI的, 但不直接管理view樹或者ViewRoot, Activity並無與這二者產生直接的聯繫, 是經過中間 「Window」的對象。
    建立過程: 1>、 使用代理模式啓動到ActivityManagerService中執行;
    2>、 建立ActivityRecord到mHistory記錄中;
    3>、 經過socket通訊到Zgote相關類建立process;
    4>、經過ApplicatonThread與ActivityManagerService創建通訊;
    5>、ActivityManagerService通知ActiveThread啓動Activity的建立;
    6>、ActivityThread建立Activity加入到mActivities中並開始調度Activity執行;
    7>、ActivityThread.handleLaunchActivity ---> ActivityThread.performLaunchActivityget

    閱讀全文請點擊:http://click.aliyun.com/m/8719/it

相關文章
相關標籤/搜索