Activity啓動相關源碼比較複雜、涉及到的鏈路較多,我常常在理清楚一遍以後過一段時間再閱讀就和第一次讀同樣,依舊要費一番功夫才能理清。爲了加深對Activity啓動過程的理解也方便之後回顧所以我把整個Activity的啓動過程總結爲一張圖。此圖基於9.0的Android源碼(Activty相關代碼雖然在不斷重構但核心邏輯仍是沒變的)。git
能夠把它理解爲應用運行的主線類,它的主要功能有:github
這個函數主要作了下面工做:微信
ApplicationThread
創建了應用與AMS
的連接。Instrumentation
。Application
。它是應用程序在AMS
中的Binder
對象,AMS
利用它能夠和ActivityThread
通訊,四大組件相關回調都是經過它來告訴ActivityThread
的。函數
這個類伴隨着ActivityThread
一塊誕生,主要用來幫助ActivityThread
來管理Activity
相關工做。它持有着AMS
在應用端的Binder
,ActivityThread
主要經過它來和AMS
通訊。源碼分析
它是Android最核心的服務,主要管理着Android系統中四大組件的運行,.net
負責全部Activity棧的管理。內部管理了mHomeStack、mFocusedStack和mLastFocusedStack三個Activity棧。其中,mHomeStack管理的是Launcher相關的Activity棧;mFocusedStack管理的是當前顯示在前臺Activity的Activity棧;mLastFocusedStack管理的是上一次顯示在前臺Activity的Activity棧。線程
幫助AMS
回調應用程序四大組件生命週期相關方法。3d
參考文章code
歡迎關注個人Android進階計劃看更多幹貨
歡迎關注個人微信公衆號:susion隨心