Android進階(一): Launcher啟動過程
阿新 • • 發佈:2018-12-03
1.前言
- 最近一直在看 《Android進階解密》 的一本書,這本書編寫邏輯、流程都非常好,而且很容易看懂,非常推薦大家去看看(沒有收廣告費,單純覺得作者寫的很好)。
- 今天就將
Launcher 系統啟動過程
總結一下(基於Android 8.0 系統)。 - 文章中例項 linhaojian的Github
2.Launcher 系統簡易啟動過程
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_簡書!
不定期分享關於安卓開發的乾貨。
寫技術文章初心
- 技術知識積累
- 技術知識鞏固
- 技術知識分享
- 技術知識交流