關於Android程序入口的猜想

對Android程序的入口一直不大理解,因爲它不像一般的C、C++或者Java程序有一個main函數入口,在執行的時候可以很清晰地知道程序的整個流程。爲此,查了下相關資料,在《Android技術內幕-系統卷》中找到了相關內容,關於整個Android的初始化內容這裏就不抄了,主要說下應用程序的執行,書中這樣說到“當系統加載完所有的服務之後會處於等待狀態,等待程序運行。但是,每一個應用程序都將啓動一個單獨的進程“。如下圖所示。


那可以理解說,在啓動應用程序的時候,Zygote服務先啓動一個虛擬機實例,然後由這個虛擬機來對應用進行解析。每個Android應用都存在AndroidManifest.xml文件,解析這個文件就會了解整個應用的組件信息,在其中會指定一個activity的intent-filter內容爲
< action android:name ="android.intent.action.MAIN" />

< category android:name ="android.intent.category.LAUNCHER" />
,這樣就從加載這個指定的activity開始來運行整個應用了。至於Android測試項目,在其中通過instrumentation來指定工程加載時要啓動的對象,如下
< instrumentation
        android:name ="android.test.InstrumentationTestRunner"
        android:targetPackage ="lynn.android" />
這樣從InstrumentationTestRunner開始執行測試項目。

同時,在com.android.internal.os.ZygoteInit類中找到了main函數
發佈了54 篇原創文章 · 獲贊 14 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章