Application對象創建過程:
在ActivityThread做handleBindApplication裏面做的applicaiton對象初始化:
初始化Application的context,創建對應的Application對象,並執行Application它的onCreate方法。
具體流程如下:
通過ApkLoader的makeApplication方法,makeApplication方法通過ContextImpl的crateAppContext方法創建了Application的ContextImpl對象。
通過ActivityThread的Instrumentation對象的newApplication方法創建了Application對象。newApplication方法通過AppComponentFactory的instantiateApplication方法實例化Application對象,完成後返回。
在Instrumentation對象的newApplication方法裏面做了Application的attach方法,此方法主要初始化裝飾者的ContextImpl對象。
通過Instrumentation執行Application的onCreate方法
時序圖: