Andrid FrameWork(五)

Android FrameWork (五)

Launcher


知識(shí)回顧:

ZygoteInit
Systemserver
binder


定義:

Android系統(tǒng)啟動(dòng)后,最后一個(gè)啟動(dòng)的桌面應(yīng)用,一些地圖、短信、電話等應(yīng)用,launcher啟動(dòng)時(shí)由systemserver進(jìn)行啟動(dòng)。

源碼分析:

SystemServer.java
AMS: 開(kāi)啟launcher
ActivityTaskManagerService.java
RootActivityContainer.java:創(chuàng)建一個(gè)意圖,拿到launcher這個(gè)activity
PMS:resolve

總結(jié):

1,在system_service startOtherServices中調(diào)用AMS的systemRedy startHomeOnAllDisplays來(lái)根據(jù)intent(action:action_main,category:intent.categray_home )查找launcher

源碼分析:

Launcher.java:

總結(jié):

1,Launcher是由system_server啟動(dòng)的,在startOtherService 中調(diào)用了AMS的systenReady ActivityTaskManagerIntent.startHomeOnAllDisplays方法查找我們的launcher
2,Launcher中的onCreate函數(shù)來(lái)創(chuàng)建LauncherModel , 調(diào)用startLoader函數(shù),創(chuàng)建LoadTask 去通過(guò)Binder訪問(wèn)到LauncherAppsService的qureyIntentActivitys函數(shù)查詢
3,LoadTask 回調(diào) onUpdateListener 調(diào)用到rebindAdapter對(duì)數(shù)據(jù)進(jìn)行填充和綁定
4,viewHolder中創(chuàng)建設(shè)置點(diǎn)擊事件 ItemClickHandler設(shè)置tag 為 AppInfo,點(diǎn)擊事件中調(diào)用startAppShortCutInfoActivity

拓展知識(shí):

1,開(kāi)機(jī)動(dòng)畫(huà)是怎么進(jìn)行加載和播放的?動(dòng)畫(huà)怎么退出?
bootanim.rc:
bootanimation_main.cpp:
總結(jié):1,bootanimation_main.cpp:中創(chuàng)建BootAnimation并設(shè)置了回調(diào)AudioAnimationCallbacks,BootAnimation繼承Thread,所以會(huì)先執(zhí)行readyToRun,threadLoop。在readyToRun中創(chuàng)建serface設(shè)置紋理,在thread Loop函數(shù)中進(jìn)行資源loadAnimation play Animation在播放的過(guò)程中不停的調(diào)用checkExit 進(jìn)行檢測(cè),檢測(cè)屬性是 service.bootanim.exit 如果退出就會(huì)推出BootAnimation線程
2,在launcher創(chuàng)建完成后執(zhí)行activityThread的handleResumeActivity會(huì)給MessageQueue中插一個(gè)idel,會(huì)調(diào)用都AcitivityTaskManager的activityIdel,執(zhí)行postFinishBooting函數(shù),調(diào)用WMS一個(gè)函數(shù)SystemProperties.set("service.bootanim.exit","1");將service.bootanim.exit 設(shè)置成1就退出了動(dòng)畫(huà)播放。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第一章 Android 系統(tǒng)架構(gòu) Android系統(tǒng)架構(gòu)分為五層,從上到下依次是: 應(yīng)用層 應(yīng)用框架層 系統(tǒng)運(yùn)行庫(kù)...
    縱橫Top閱讀 853評(píng)論 0 0
  • 參照《Android 進(jìn)階解密》做的摘要。 Android 系統(tǒng)啟動(dòng)過(guò)程 init 進(jìn)程啟動(dòng) Linux 內(nèi)核加載...
    無(wú)事可說(shuō)閱讀 701評(píng)論 0 1
  • Android的安裝和啟動(dòng)比較特別,很多機(jī)制和直觀感受并不一樣,如果這里出現(xiàn)誤解,就很難透徹理解App的運(yùn)行,這里...
    藍(lán)灰_q閱讀 7,241評(píng)論 1 28
  • Android Studio JNI流程首先在java代碼聲明本地方法 用到native關(guān)鍵字 本地方法不用去實(shí)現(xiàn)...
    MigrationUK閱讀 12,088評(píng)論 7 123
  • 梳理流程和圖形參考Stan_Z的博客:Android圖形系統(tǒng)篇總結(jié):http://www.itdecent.cn...
    QGv閱讀 3,574評(píng)論 0 2

友情鏈接更多精彩內(nèi)容