1. 程式人生 > >Android進階(二): 應用程序啟動過程

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

不定期分享關於安卓開發的乾貨。


寫技術文章初心

  • 技術知識積累
  • 技術知識鞏固
  • 技術知識分享
  • 技術知識交流