Activity啓動過程分析

這裏的Activity分爲根Activity和普通Activity.這兩種啓動

  • 所謂根Activity啓動就是類似冷啓動,先要啓動該Activity所在的應用程序進程,然後在該進程內啓動Activity
  • 普通Activity的啓動就是,前提它們所在的進程已經啓動了,然後就是Activity之間的跳轉之類的。

根Activity啓動的整體流程如下:

Launcher到AMS的調用過程如下:

因爲AMS到zygote進程,以及zygote進程啓動應用程序,這些在上篇文章有介紹,這裏不再重複了 應用程序進程啓動介紹

接下來就是AMS與ApplicationThread之間的調用

AMS與ApplicatinThread之間是通過binder通訊的.

最後就是ApplicationThread與ActivityThread之間的調用

普通Activity的啓動

就只有兩層調用

  • AMS與ApplicationThread之間的調用
  • ApplicationThread與ActivityThread之間的調用
    private class ApplicationThread extends IApplicationThread.Stub {
        ....
        ....
    }

ApplicationThread是ActivityThread中的內部類,運行在binder線程池中
ApplicationThread是AMS與應用程序進程之間的通許橋樑

參考:Android進階解密

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章