1. 程式人生 > >Android原始碼學習筆記:Context、ActivityThread和Activity的生命週期

Android原始碼學習筆記:Context、ActivityThread和Activity的生命週期

總結:

①在應用啟動的時候,首先會建立一個程序process,然後建立ActivityThread這個物件。

②根據我們之前學習的Handler,可以知道,在ActivityThread的main方法中,會建立一個Looper和MessageQueue物件。

③在建立完Looper和MessageQueue物件後,還會建立一個ApplicationThread物件,並且拿到ActivityManagerService的遠端代理物件,實現和ActivityManagerService的通訊。

④建立一個H類的例項,而這個H類實際上是一個Handler物件。

⑤呼叫Looper.loop()方法,開始輪詢訊息佇列。

⑥然後當要啟動一個Activity的時候,通過ActivityManagerService通知ApplicationThreadNative,呼叫到onTransact方法。

⑦在onTransact中進行判斷,呼叫到對應的實現類ApplicationThread的scheduleLaunchActivity方法。

⑧在scheduleLaunchActivity方法中,先建立對應的引數資訊ActivityClientRecord,然後通過queueOrSendMessage傳送訊息。 ⑨Handler收到訊息,在handleMessage中進行處理,在handleMessage中拿到對應的ActivityClientRecord進行,然後作為引數傳入,並呼叫方法handleLaunchActivity方法。

⑩在handleLaunchActivity中通過mInstrumentation呼叫對應的生命週期。 到此,我們對於Context的實現類,、ActivityThread的建立和Activity的生命週期的基本分析也算是告一段落了,當然,對於Activity生命週期的分析並沒有完全結束。