Android學習筆記——Activity的啟動和建立

來源:互聯網
上載者:User

標籤:android   blog   tar   strong   art   http   

http://www.cnblogs.com/bastard/archive/2012/04/07/2436262.html

 

Android Activity學習筆記——Activity的啟動和建立

 

  最近學習Android相關知識,感覺僅僅瞭解Activity幾個生命週期函數基本上沒有任何意義的;

於是想深入瞭解一下Activity到底是怎麼一回事怎麼運行來的;裡面的東東真是叫個龐大;

現在只能簡單的瞭解其架構性的概念和流程;

一 Activity概念

  Android的核心不是Application而是Activity,至少在我們開發的時候是這樣的;

  Activity就是被用來進行與使用者互動和用來與android內部特性互動的組件,

在應用程式中用到的所有activity都需要在manifest.xml檔案中進行註冊;

那麼Activity又是怎樣一種組件,怎麼樣進行顯示互動的,一個activity執行個體是如何被管理和運行起來的,activity生命週期又是怎麼一回事。

二 Activity架構和管理結構

Activity管理的核心是AcitivityManagerService,是一個獨立的進程;

ActiveThread是每一個應用程式所在進程的主線程,迴圈的訊息處理;

ActiveThread與AcitivityManagerService的通訊是屬於處理序間通訊,使用binder機制;

 

 

    

 

 

三 Activity啟動過程

以啟動一個應用程式startActivity為例看一下代碼執行的大概流程:

 

    

 

可將其分為6個過程:

1 使用代理模式啟動到ActivityManagerService中執行;

2 建立ActivityRecord到mHistory記錄中;

3 通過socket通訊到Zgote相關類建立process;

4 通過ApplicatonThread與ActivityManagerService建立通訊;

5 ActivityManagerService通知ActiveThread啟動Activity的建立;

6 ActivityThread建立Activity加入到mActivities中並開始調度Activity執行;

請看:

  

          

 

並不是所有啟動一個Activity都是這樣的過程:一個應用程式中所有Activity只有一個ActivityThread屬於一個Process;

         ActivityStack並不是每次都需要建立一個Stack來管理Activities;

下面看看adnroid系統中四個重要概念:

Application:由多個相關的鬆散的與使用者進行互動Activity組成,通常被打包成apk尾碼檔案中;

Activities:應用程式的主要組成部分,是應用程式的核心;

ActivityStack:將應用程式中開啟的Activity儲存在曆史棧中,按照棧的先進後出的原則;

Start Activity時入棧,返回時出棧;

Task:將一系列相關的Activity組合,完成某個應用程式完整操作;不管activity屬於哪

個Application的;

例如:寫資訊—調用—檔案管理,都屬於一個Task,但屬於兩個Application;

 

四 Activity啟動流程類結構分析1 ActivityService相關類

 

使用了Proxy代理模式:ActivityManagerProxy代理ActivityManagerService;

並為之提供了公用的提供者:IActivityManager;

 

 

    

2 Activity啟動 

  

    

 

3 ActivityStack管理

   

    

ActivityStack建立並儲存系列建立的Activity執行個體,將其入棧管理mHistory;

4 ActivityThread

         This manages the execution of the main thread in anapplication process,

scheduling and executing activities,broadcasts, and other operations on it as the activity manager requests.

         是應用程式的主線程,訊息迴圈執行者;其中有很多的內部類來完成工作;

  ActivityThread使用內部類:ApplicationThread與ActivityManagerService進行通訊,

  ActivityThread將狀態變化傳遞控制用戶端Activity的狀態執行;

   mActivities儲存由ActivityStack所建立的ActivityRecord相關執行個體引用;

    

 

 

  藉助網上一些達人的總結以及自己結合代碼的分析,總結上述流程架構方面的東東;

可能並不一定準確或存在漏洞,懇請達人指點多謝;

相關文章

聯繫我們

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