標籤:
根
Activity啟動過程
Launcher啟動MainActivity的過程主要分為6個步驟:
一、Launcher向ActivityManagerService發送一個啟動MainActivity的處理序間通訊請求;
二、ActivityManagerService首先將MainActivity的資訊儲存下來,再向Launcher組件發送一個進入中止狀態的處理序間通訊請求;
三、Launcher進入中止狀態後,向ActivityManagerService發送一個已經進入中止狀態的處理序間通訊請求;
四、ActivityManagerService啟動一個新的應用程式進程;
五、新的進程啟動完畢,ActivityManagerService發送一個啟動完成的處理序間通訊請求到ActivityThread;
六、ActivityThread將MainActivity組件啟動起來。
子Activity在進程內啟動過程
一、MainActivity向ActivityManagerService發送一個啟動SubActivity處理序間通訊請求;
二、ActivityManagerService儲存SubActivity組件資訊,再向MainActivity發送進入中止狀態的處理序間通訊請求;
三、MainActivity進入中止狀態,並將狀態返回給ActivityManagerService;
四、ActivityManagerService將SubActivity儲存的組件發送給應用程式,將SubActivity啟動起來。
一個Activity組件是在已經存在的應用程式進程中啟動,還是在新的應用程式進程中啟動,取決於以下兩個因素:
Activity組件的的使用者ID;
Activity組件的android:process屬性。
Task用來將一系列相關的Activity組件整合到一起,共同完成一個業務功能。這些Activity可以在不同的進程中,這使得Activity組件的重用性強。
以上內容閱讀《Android系統原始碼情景分析》第7章《Activity組件的啟動過程》總結。
Android源碼——Activity組件的啟動過程