Activity 啟動流程
下面的流程是 API 27,不同的版本之間差異不大,但在細節上有區別。
點選桌面應用圖示或自己程式啟動Activity過程,由於過程比較長,所以分段來介紹。
從 Activity#startActivity 到切換到 ActivityThread 的過程
這部分比較繁瑣切沒太大意思,不同的版本走的過程有些差異。

activity01.png
ActivityThread 到調起 onCreate 過程
下面的程式碼你可以注意到下面幾點
- ApplicationThread 實現了 IApplicationThread.Stub
- ActivityThread 是程式的入口,可以看到 main 方法,在 main 中關聯 Looper,
- Activity 是通過反射建立的,Instrumentation 這類關係到 Activity 的生命週期,可以通過 hook Instrumentation 實現外掛化。

activity02.png
具體的程式碼就不帖了,自己畫一張流程圖比簡單的貼程式碼更直觀。