1. 程式人生 > >Android進階(一): Launcher啟動過程

Android進階(一): Launcher啟動過程

1.前言

  • 最近一直在看 《Android進階解密》 的一本書,這本書編寫邏輯、流程都非常好,而且很容易看懂,非常推薦大家去看看(沒有收廣告費,單純覺得作者寫的很好)。
  • 今天就將 Launcher 系統啟動過程 總結一下(基於Android 8.0 系統)。
  • 文章中例項  linhaojian的Github

2.Launcher 系統簡易啟動過程

Luancher簡易流程.png


3.各部分說明

3.1 啟動電源以及系統啟動

* 電源按下時引導晶片程式碼從預定義的地方(ROM)開始執行,載入載入程式BootLoader到RAM,然後執行。

3.2 載入程式BootLoader

* 載入程式BootLoader是在Android作業系統開始執行前的一個小程式,它的主要作用是把系統OS拉起來並執行。

3.3 Linux核心啟動

* 核心啟動是,設定快取、被保護儲存器、計劃列表、載入驅動。當核心完成系統設定時,它首先在系統檔案中尋找init.rc檔案,並啟動init程序。

3.4 init程序啟動

* 初始化和啟動屬性服務,並且啟動Zygote程序。

3.5 Zygote程序啟動

* 建立Java虛擬機器併為Java虛擬機器註冊JNI方法;建立伺服器端的Socket;啟動SystemServer程序;建立應用程式的程序。

3.6 SystemServer程序啟動

* 啟動Binder執行緒池和SystemServiceManager,並且啟動各種系統服務(引導服務核心服務其他服務)。

引導服務:ActivityManagerService、PowerManagerService、PackageManagerService、Sensor…
核心服務:DropBoxManagerService、BatteryService、UsagerStatsService、WebViewUpdateService。
其他服務:CameraService、AlarmManagerService、WindowManagerService、NotificationManagerService…

3.7 ActivityManagerService

* 啟動Launcher程序;通過Socket向Zygote程序傳送請教建立應用程序資訊。

3.8 Launcher

* Android系統應用;顯示系統中所有已安裝的應用。

3.9 LauncherModel

* 載入系統已經安裝的應用程式資訊。

3.10 AllAppsContainerView

* 顯示APP列表。


4.總結

  • 到此,簡單把系統應用Launcher啟動過程介紹完畢。
  • 如果喜歡我的分享,可以點選  關注  或者  ,你們支援是我分享的最大動力 。
    linhaojian的Github

歡迎關注linhaojian_CSDN部落格或者linhaojian_簡書

不定期分享關於安卓開發的乾貨。


寫技術文章初心

  • 技術知識積累
  • 技術知識鞏固
  • 技術知識分享
  • 技術知識交流