Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android應用程序的啟動流程

Android應用程序的啟動流程

編輯:關於Android編程

Android系統中一個應用程序的主題是由ActivityThread構成的。不過涉及到很多細節如ActivityThread是由誰來創建的 又是在什麼時間創建?它和系統服務程序如ActivityManagerService,WindowManagerService之間又有什麼聯系?這些都需要做了解。

通常有兩種方式在系統中被啟動

在Launcher中點擊相應的應用程序圖標啟動

這種啟動方式大都由用戶發起,默認情況下apk應用程序在Launcher主界面上會有一個圖標,通過點擊可以啟動應用程序指定的Activity 通過startActivity啟動 這種啟動方式通常存在於源碼內部,比如在Activity1中通過startActivity來啟動Activity2   這兩種方式的流程基本上是一致,最終都會通過調用ActivityManagerService的startActivity來完成。整個流程如圖所示:

\

如果一切順利,AMS會嘗試啟動指定的Activity , Activity的生命周期除了onCreate,onResume外,還有onPause,onStop等,其中的onPause就在此時被調用的--因為系統規定,在新的Activity啟動之前,原先處於resumed狀態的Activity會被pause。這種管理方式相比於Windows的多窗口系統簡單很多,同時可以滿足移動設備的一般需求。將一個Activity置為pause主要是通過Activity所屬進度的ApplicationThread.schedulePauseActivity方法來完成的。ApplicationThread是應用程序進程提供給AMS的一個Binder通道。

當收到pause後,此進程的ActivityThread主線程將會做進一步處理。除了我們熟悉的調用Activity.onPause()外,還需要通知WindowManagerService這一變化。假如即將啟動的 Activity所屬的進程並不存在,那麼AMS還需要先把它啟動起來,這一步由Process.start實現。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved