Android Framework 初探

來源:互聯網
上載者:User

標籤:activity   事件   系統架構   nta   較差   window   style   activiti   接收   

最近工作任務不忙,學習一下Android Framework方面的知識。

一、介紹,是什麼

     Android的Framework是直接應用之下的一層,叫做應用程式架構層。這一層是核心應用程式所使用的API架構,為應用程式層提供各種API,提供各種組件和服務來支援我們的Android開發,包括ActivityManager,WindowManager,ViewSystem等。下面貼一張學習Android時常見的Android系統架構圖:

二、有什麼

Android Framework架構套件含了3個主要部分:服務端、用戶端、Linux驅動。

首先介紹一下服務端都有哪些重要的東西:
  1. ActivityManagerService(Ams):負責管理所有應用程式中的Activity,它掌握所有Activity的情況,具有所有調度Activity生命週期的能力,簡單來說,ActivityManagerService是管理和掌控所有的Activity.
  2. WindowManagerService(Wms):控制視窗的顯示、隱藏以及視窗的層序,簡單來說,它就是管理視窗的,大多數和View有關係的都要和它打交道。
  3. KeyQ類:它是Wms的一個內部類,一旦建立就會啟動一個新線程,這個線程會不斷地接收和讀取使用者的UI操作訊息,並把這些訊息放到訊息佇列QueueEvent中。
  4. InputDispatcherThread類:該類也是一旦建立就會啟動一個新線程,這個線程會不斷地從上面的QueueEvent中取出使用者的訊息進行一定的過濾,再將這些訊息發送給當前活動的用戶端程式中。
下面介紹一下用戶端比較重要的東西:
  1. ActivityThread類:主線程類,即UI線程類,我們的程式入口就是從ActivityThread的main()函數入口的。它根據Ams的要求(通過IApplicationThread介面,Ams為Client,ActivityThread.ApplicationThread為Server)負責調度和執行activities、broadcasts和其他動作。
  2. ViewRoot類:很重要的一個類,負責用戶端與Wms的互動:內部類有W類,W類繼承與Binder,所以他與ApplicationThread的角色差不多,只不過它對應的是Wms,當Wms想與用戶端進行通訊的時候,Wms就調用這個類。內部又有ViewRootHandler類繼承於Handler,所以他能在W類接收到Wms的訊息後把這個訊息傳送到UI線程中。同時介面繪製的發起點也是在這裡面:performTraversals();
  3. W類:ViewRoot的幫手,繼承與Binder,是ViewRoot內部類。主要協助ViewRoot實現把Wms的IPC(處理序間通訊)調用轉換為本地的一個非同步呼叫。
  4. Activity類:這個類我們比較熟悉,APK啟動並執行最小單位。
  5. PhoneWindow類:繼承自Window類,它裡面會放一個DecorView,它提供了一組統一視窗操作的API。
  6. Window類:提供一些通用的視窗操作API.
  7. DecorView類:這是我們所能看到的View的所有,它繼承自FrameLayout,我們寫的布局view就是放在它這個裡面。
  8. ApplicationThread類:繼承魚Binder,當Ams想與用戶端通訊時(即調用用戶端的方法時),Ams調用的就是這個類。
  9. Instrumentation類:負責直接與Ams對話,比如當用戶端想與Ams進行通訊時(即調用Ams服務裡的方法),都是它去實現單項調用Ams,所有想調用Ams的操作都集中到它這裡,它負責單向調用Ams。
  10. WindowManager:用戶端如果想建立一個視窗得先告訴WindowManager一聲,然後它再和WindowManagerService交流一下看看能不能建立,用戶端不能直接和WMS互動。
Linux驅動:

          Linux驅動和Framework相關的主要是兩個部分:畫家SurfaceFlingger和快遞員Binder。每一個視窗都對應一個畫Surface,SF主要是把各個Surface顯示到同一螢幕上。Binder是提供跨進程的訊息傳遞。

Manager機制:

         服務端有很多各種各樣的系統服務,當用戶端每次想要調用這些服務事(IPC)如果每次都是想要哪一個服務就直接去調用哪一個服務的話,會顯得比較亂而且拓展性較差,所以Android採用了這種Manager機制,即設定一個類似經理的東西,也就是Manager,它自身也是一個服務,並且它管理著所有其他的服務,也就是說,我們需要哪個服務都要先經過它,它負責為我們去調用這個服務,所以這樣就只給我們暴露的一個經理這個服務,其他的服務被他屏蔽了,這和java的封裝很像。

         最後總結一下Android Framework的三大核心功能:1、View.java:View工作原理,實現包括繪製view、處理觸摸、按鍵事件等。2、ActivityManagerService.java:Ams 管理所有應用程式的Activity等。3、WindowManagerService.java:Wms 為所有應用程式分配視窗,並管理這些視窗。

 

Android Framework 初探

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.