Android進階(二): 應用進程啟動過程

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_簡書

不定期分享關于安卓開發的干貨。


寫技術文章初心

  • 技術知識積累
  • 技術知識鞏固
  • 技術知識分享
  • 技術知識交流
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1 進程啟動過程 Android應用程序框架層創建的應用程序進程具有兩個特點,一是進程的入口函數是Activit...
    Kevin_Junbaozi閱讀 3,907評論 0 23
  • 系統啟動后,我們就比較關心應用程序是如何啟動的 1.應用程序進程概述 要想啟動一個應用程序,首先要保證這個應用程序...
    凱玲之戀閱讀 346評論 0 1
  • 在了解蒙氏教育中關于孩子敏感期基本概念之后,我能夠理解兒子無理取鬧,可能處于執拗詛咒敏感期。但如只是理解而無法解決...
    言父詞母閱讀 1,194評論 0 0
  • 在我們已走過的人生路中,我們或許都經歷過一段讓你念念不忘的感情,你總是會想起那個人,在白天,在黑夜,在似曾相識的場...
    我的血液住著風閱讀 669評論 0 0
  • 熟悉的你 以陌生的姿勢出現在我面前 造就不可逾越的分離 撕碎大片大片的信仰 我跪坐在夜的細雨中 妄圖把你帶走的東西...
    重復走閱讀 94評論 0 0