Android FrameWork——ActivityManager架構

來源:互聯網
上載者:User

1.ActivityManager是android架構的一個重要部分,它負責一新ActivityThread進程建立,Activity生命週期的維護,本blog就是著手對ActivityManager架構作一個整體的瞭解
        2.先看一個靜態類結構圖:

        該圖摘自 曹文斌blog<Activity Manager架構解析>
        很清楚地描述了ActivityManager架構的幾個主要類之間的關係,我們做應用開發接觸很多的其實就是ActivityManager類,該類也在SDK中公布,應用可以直接存取,它提供了我們管理Activity的一些基本的方法
如下:
        public void testgetRecentTasks()
                //擷取最近的應用,最後啟動的排前
        public void testgetRunningTasks()
                //擷取當前啟動並執行Activity應用
        public void testgetRunningServices()
                //擷取當前啟動並執行service應用
        public void testgetRunningAppProcesses()
                //擷取所用系統啟動並執行進程
        而這些操作都依賴於ActivityManagerProxy代理類的實現,IActivitManager介面定義了所有 ActivityManager架構的操作,ActivityManagerProxy實現了介面IActivitManager,但並不真正實現這些方 法,它只是一個代理類,真正動作的執行為Stub類ActivityManagerService,ActivityManagerService對象只 有一個並存在於system_process進程中,ActivityManagerService繼承於ActivityManagerNative存 根類。
        3.從前面分析知,ActivityManager存在於使用者進程中,由使用者進程調用擷取Activity管理的一些基本資料,但是 ActivityManager類並不真正執行這些操作,操作的真正執行在system_process進程中的 ActivityManagerService,ActivityManagerService作為一個服務在system_process啟動時被加 載,關於ActivityManagerService如何被載入這裡不展開討論,後面在討論android系統啟動時在探討,那麼從 ActivityManager到ActivityManagerService中間經過一個環節,那就是進程通訊,而IActivityManager 以及實現介面的代理類ActivityManagerProxy,存根類ActivityManagerNative起著負責進程通訊的作用,我在前面的 blog aidl實現機制淺析中有對進程通訊作了較深入的分析,雖然這裡沒有使用aidl檔案定義進程通訊介面IActivityManager,其實是一樣的, 我們可以把它看做是自己手動編譯的aidl進程通訊java類實現,ActivityManagerProxy是代理 類,ActivityManagerNative是Stub類,IActivityManager是aidl介面,這樣就很容易理解了。
        4.ActivityManager提供了很少的方法,要能夠使用IActivityManager介面提供的其他方法我們可以直接使用ActivityManagerProxy對象,如何擷取?
return ActivityManagerNative.getDefault()
        不要被方法名稱所迷惑,由於我們在使用者進程調用,是不可能擷取一個ActivityManagerNative對象的(再說 ActivityManagerNative是一個abstract類),我們實際擷取的是一個ActivityManagerProxy對象
        理解以上ActivityManager架構基本結構,後面深入研究它就要容易許多了。

原文:http://blog.csdn.net/stonecao/article/details/6579710

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.