Android Application啟動流程

來源:互聯網
上載者:User

標籤:lin   發送   不可   android系統   核心   self   一個   調用   方法   

  轉載:http://www.51testing.com/html/34/n-3725434.html  
?      先對整體有了一個基本的認識之後,再去看細節  談到 Android Application的啟動 流程,很多 文章都是各種源碼類和方法的一堆調用關係,這樣的文章就算看一百遍,也只是雲裡霧裡。源碼得看,但是最好不要一下子深陷到源碼的細節之中,不可自拔。這裡站在前人的基礎之上做一個總結。  在說應用的啟動流程之前,得先瞭解一下Android系統的啟動流程,因為Application的啟動是離不開系統的處理的。   Android系統的啟動流程  1.BootLoader啟動核心和init進程;  2.init進程分裂出過個守護進程,如Android Debug Damon,USB Damon,這些守護進程會處理一些與硬體相關的介面;  3.init進程啟動一個Zygote進程  Zygote進程初始化了第一個VM,並預先載入了Framework和一些通用資源。  zygote進程會開啟一個Socket介面,用來監聽請求。一旦收到請求,Zygote會基於自身積極式載入的VM來孵化一個新的VM,並建立一個新的進程。  4.啟動Zygote之後,init進程會啟動Runtime進程。Zygote會孵化出一個超級管理進程-System Server。System Server 會啟動所有系統核心的服務,如Activity Manager Service以及硬體相關的Service。  5.這個時候就開始準備啟動它的第一個 App進程-Home進程了。  Android系統已經啟動完畢,一些核心的服務也已經啟動完畢,然後啟動Launcher應用,那麼什麼時候啟動應用的進程呢?   App進程什麼時候被建立?  答案是被需要的時候才建立。  如果當一個應用(多是Launcher)調用App中的頁面之時,如果目標進程不存在,則會建立一個新的進程並啟動。   Application啟動流程  在說Application啟動流程之前,先看一張前人的流程圖:  App啟動流程  分析流程的時候,可以同時看一下上面的流程圖。  點擊案頭Icon  然後調用StartActivity(Intent intent)方法;  這個方法最終會通過Binder IPC的方式調用ActivityManagerService,這裡簡稱AMS。  AMS會執行以下操作:  最終會通過PackageManager的resolveIntent()方法收集這個Intent對象的指向資訊(中間會經曆很多類,方法的調用)。  通過grantUriPermissionLocked()方法驗證使用者是否具有足夠的許可權去調用目標Activity;  查詢ProcessRecord是否存在  如果不存在,AMS會建立新的進程來執行個體化目標Activity。  接下來就說App進程的建立過程了。   App進程的建立  調用startProcessLocked()方法建立新的進程  通過上面所說的Socket通道傳遞參數給Zygote進程,Zygote進程孵化自身,並調用ZygoteInit.main()方法來執行個體化ActivityThread對象,並最終返回新進程的pid。  ActivityThread依次調用Looper.prepare()和Looper.loop()方法來開啟訊息迴圈。  這個時候進程已經建立完畢,但是如何與應用自身的Application聯絡起來呢?   Application的綁定  調用ActivityThread中的bindApplication()方法發送一個BIND_APPLICATION的訊息到訊息佇列中.  通過handleApplication()方法處理之前的綁定訊息;  調用makeApplication()方法來載入Application的class 到記憶體中。  大概的流程如下,如果需要做一些特殊的處理,還是需要自己深入到源碼中,找到自己可以處理的點,進行一些定製化處理。

 

Android Application啟動流程

相關文章

聯繫我們

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