1.前言
- 最近一直在看 《Android進階解密》 的一本書,這本書編寫邏輯、流程都非常好,而且很容易看懂,非常推薦大家去看看(沒有收廣告費,單純覺得作者寫的很好)。
- 今天就將
應用進程啟動過程
總結一下(基于Android 8.0 系統)。 - 文章中實例 linhaojian的Github
2.應用進程啟動過程
應用進程啟動流程.png
3.各部分說明
3.1 ActivityManagerService:
- 準備需要啟動的應用進程相關信息與資源(進程類名、進程uid等等)。
3.2 Process:
- 工具類,管理OS系統所有進程。
3.3 ZygotePrcess:
- 連接Zygote服務器Socket;封裝與Zygote通訊的數據格式 & 發送至Zygote。
3.4 ZygoteInit:
- 創建Binder線程池;創建應用進程實例。
3.5 ZygoteServer:
- 注冊本地服務器Socket;輪詢Socket接收ActivityManagerService請求創建應用進程的數據。
3.6 ZygoteConnection:
- 接收 & 解析ActivityManagerService請求創建應用進程的數據。
3.7 Zygote:
- 根據解析的數據創建進程。
3.8 RuntimeInit:
- 通過反射的方式調用ActivityThread的main方法。
3.9 ActivityThread:
- 代表一個應用進程,負責所有的Activity管理、調度、執行與其他操作請求;
4.總結
- 到此,簡單把應用進程啟動過程介紹完畢。
- 如果喜歡我的分享,可以點擊 關注 或者 贊,你們支持是我分享的最大動力 。
- linhaojian的Github
歡迎關注linhaojian_CSDN博客或者linhaojian_簡書!
不定期分享關于安卓開發的干貨。
寫技術文章初心
- 技術知識積累
- 技術知識鞏固
- 技術知識分享
- 技術知識交流