資源描述:
《Android系統(tǒng)默認(rèn)Home應(yīng)用程序(Launcher)的啟動(dòng)過程源代》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、在前面一篇文章中,我們分析了Android系統(tǒng)在啟動(dòng)時(shí)安裝應(yīng)用程序的過程,這些應(yīng)用程序安裝好之后,還需要有一個(gè)Home應(yīng)用程序來負(fù)責(zé)把它們?cè)谧烂嫔险故境鰜?,在Android系統(tǒng)中,這個(gè)默認(rèn)的Home應(yīng)用程序就是Launcher了,本文將詳細(xì)分析Launcher應(yīng)用程序的啟動(dòng)過程。?????Android系統(tǒng)的Home應(yīng)用程序Launcher是由ActivityManagerService啟動(dòng)的,而ActivityManagerService和PackageManagerService一樣,都是在開機(jī)時(shí)由SystemServer組件啟動(dòng)的,
2、SystemServer組件首先是啟動(dòng)ePackageManagerServic,由它來負(fù)責(zé)安裝系統(tǒng)的應(yīng)用程序,具體可以參考前面一篇文章Android應(yīng)用程序安裝過程源代碼分析,系統(tǒng)中的應(yīng)用程序安裝好了以后,SystemServer組件接下來就要通過ActivityManagerService來啟動(dòng)Home應(yīng)用程序Launcher了,Launcher在啟動(dòng)的時(shí)候便會(huì)通過PackageManagerServic把系統(tǒng)中已經(jīng)安裝好的應(yīng)用程序以快捷圖標(biāo)的形式展示在桌面上,這樣用戶就可以使用這些應(yīng)用程序了,整個(gè)過程如下圖所示:點(diǎn)擊查看大圖????
3、?下面詳細(xì)分析每一個(gè)步驟。?????Step1.SystemServer.main?????這個(gè)函數(shù)定義在frameworks/base/services/java/com/android/server/SystemServer.java文件中,具體可以參考前面一篇文章Android應(yīng)用程序安裝過程源代碼分析的Step1。?????Step2.?SystemServer.init1?????這個(gè)函數(shù)是一個(gè)JNI方法,實(shí)現(xiàn)在?frameworks/base/services/jni/com_android_server_SystemServ
4、er.cpp文件中,具體可以參考前面一篇文章Android應(yīng)用程序安裝過程源代碼分析的Step2。?????Step3.?libsystem_server.system_init?????函數(shù)system_init實(shí)現(xiàn)在libsystem_server庫中,源代碼位于frameworks/base/cmds/system_server/library/system_init.cpp文件中,具體可以參考前面一篇文章Android應(yīng)用程序安裝過程源代碼分析的Step3。?????Step4.?AndroidRuntime.callStatic
5、?????這個(gè)函數(shù)定義在frameworks/base/core/jni/AndroidRuntime.cpp文件中,具體可以參考前面一篇文章Android應(yīng)用程序安裝過程源代碼分析的Step4。?????Step5.?SystemServer.init2?????這個(gè)函數(shù)定義在frameworks/base/services/java/com/android/server/SystemServer.java文件中,具體可以參考前面一篇文章Android應(yīng)用程序安裝過程源代碼分析的Step5。?????Step6.?ServerThrea
6、d.run?????這個(gè)函數(shù)定義在frameworks/base/services/java/com/android/server/SystemServer.java文件中,具體可以參考前面一篇文章Android應(yīng)用程序安裝過程源代碼分析的Step6。?????Step7.ActivityManagerService.main?????這個(gè)函數(shù)定義在frameworks/base/services/java/com/android/server/am/ActivityManagerServcie.java文件中:viewplain1.pu
7、blic?final?class?ActivityManagerService?extends?ActivityManagerNative??2.????????implements?Watchdog.Monitor,?BatteryStatsImpl.BatteryCallback?{??3.????......??4.??5.????public?static?final?Context?main(int?factoryTest)?{??6.????????AThread?thr?=?new?AThread();??7.???????
8、?thr.start();??8.??9.????????synchronized?(thr)?{??10.????????????while?(thr.mService?==?null)?{