Andrid FrameWork(五)

Android FrameWork (五)

Launcher


知識回顧:

ZygoteInit
Systemserver
binder


定義:

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

源碼分析:

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

總結(jié):

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

源碼分析:

Launcher.java:

總結(jié):

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

拓展知識:

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

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

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

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

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