標籤:activity視窗建立 gui
學習android的視窗模組一周多了,感覺自己對這個模組的理解還是比較模糊,先把get的知識點記錄一下。
是學習過程記錄的activity視窗啟動過程式列圖,沒有或者沒辦法完整的描繪出來,整個過程比較複雜:
整個學習過程中是參照老羅的android之旅部落格和《深入理解android核心設計思想》一書來輔助的,非常感謝前輩。
Activity的整體啟動過程可查看Android4.4 framework分析——Launcher中啟動應用程式(startActivity)的過程的順序圖表,本文關注Activity視窗建立細節部分(也許不夠細)。
step3~step13,是Activity上下文Context的建立過程,Activity本身是Context的間接子類,而此處建立的ContextImpl與它們的關係,可查看Android與設計模式——裝飾者(Decorator)模式一文。step3~step13的詳細分析,建議查看老羅的Android應用程式視窗(Activity)的運行上下文環境(Context)的建立過程分析,這篇文章寫的比較詳細。
step14~step16,是PhoneWindow的建立,我們標題提到的Activity視窗其實就是這個,所有的View都是在這window上建立起來的。
step19~step22,是WindowManager的建立過程。
step24~step33,是DecorView的建立過程,這個DecorView後面會被add到PhoneWindow裡。
step40~step42,XXXActivity的onResume()的調用過程,標誌著這個activity要被顯示出來了。
step47,開始將視窗添加到WMS中。
step50,ViewRootImpl建立了。
step51~step57,將window與WMS關聯起來了,WMS中將會記錄這個window的相關資訊。
step63,將逐步將我們在xml檔案中的布局添加到ViewRootImpl中。
後面會用SurfaceFlinger來關聯Surface之類的,這部分C++代碼不太理解,整個過程還有不少地方需要加深理解,繼續啃代碼。。。。
右鍵複製圖片地址,在瀏覽器中開啟即可查看大圖。
未完待續,有不對的地方,請指正。
Android4.4 Framework分析——Activity視窗的建立過程(一)