android應(yīng)用啟動(dòng)流程 android 應(yīng)用啟動(dòng)流程

Android輸入法IMMS服務(wù)啟動(dòng)流程(3)(啟動(dòng)IMS應(yīng)用)

文件:/ frameworks / base / services / core / java / com / android / server / wm / WindowState.java 能看到實(shí)際上這個(gè)過(guò)程誕生了一個(gè)很重要的對(duì)象InputWindowHandle,輸入窗口的句柄。

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供文登網(wǎng)站建設(shè)、文登做網(wǎng)站、文登網(wǎng)站設(shè)計(jì)、文登網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、文登企業(yè)網(wǎng)站模板建站服務(wù),10年文登做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

Activity的啟動(dòng)流程

Activity啟動(dòng)流程(從Launcher開(kāi)始):第一階段: Launcher通知AMS要啟動(dòng)新的Activity(在Launcher所在的進(jìn)程執(zhí)行)第二階段:AMS先校驗(yàn)一下Activity的正確性,如果正確的話,會(huì)暫存一下Activity的信息。

啟動(dòng)者Activity向Instrumentation請(qǐng)求啟動(dòng)目標(biāo)的Activity。 Instrumentation通過(guò)AMS在App進(jìn)程的IBinder接口(IActivityManager)訪問(wèn)AMS,此時(shí)App進(jìn)程會(huì)阻塞等待AMS的調(diào)用返回,采用的跨進(jìn)程通信技術(shù)是AIDL。

啟動(dòng)Activity的消息,會(huì)回調(diào)到ActivityThread中的mH的dispatchMessage方法,可以通過(guò)給mH設(shè)置一個(gè)callBack,在callBack的handleMessage中,然后替換回真正要啟動(dòng)的Intent,然后返回false,讓handleMessage再繼續(xù)處理。

ATM啟動(dòng)最終調(diào)用的是ActivityTaskManagerService.Lifecycle.onStart()來(lái)啟動(dòng)ATM服務(wù)的 源碼:ActivityTaskManagerService.java#Lifecycle.class 將ActivityTaskManagerInternal添加到本地服務(wù)的全局注冊(cè)表中。

Activity的四種啟動(dòng)模式: standard 模式啟動(dòng)模式,每次激活A(yù)ctivity時(shí)都會(huì)創(chuàng)建Activity,并放入任務(wù)棧中。

:startActivity 主要就是應(yīng)用進(jìn)程與 system_server 進(jìn)程的 AMS 通信,AMS 是實(shí)際來(lái)管理 Activity 組件的,負(fù)責(zé)處理啟動(dòng)模式,維護(hù) Activity 棧等工作。

Activity啟動(dòng)流程筆記

1、在 ActivityStarter. executeRequest 方法中先做一系列的檢查,包括調(diào)用進(jìn)程的檢查、Intent的檢查、權(quán)限的檢查、向PKMS獲取啟動(dòng)Activity的ActivityInfo等信息,然后調(diào)用 startActivityUnchecked 方法開(kāi)始對(duì)要啟動(dòng)的Activity做堆棧管理。

2、前面realStartActivityLocked方法中通過(guò)addCallback,傳入?yún)?shù)LaunchActivityItem。

3、Activity啟動(dòng)流程分兩種,一種是啟動(dòng)正在運(yùn)行的app的Activity,即啟動(dòng)子Activity。如無(wú)特殊聲明默認(rèn)和啟動(dòng)該activity的activity處于同一進(jìn)程。如果有聲明在一個(gè)新的進(jìn)程中,則處于兩個(gè)進(jìn)程。

4、:startActivity 主要就是應(yīng)用進(jìn)程與 system_server 進(jìn)程的 AMS 通信,AMS 是實(shí)際來(lái)管理 Activity 組件的,負(fù)責(zé)處理啟動(dòng)模式,維護(hù) Activity 棧等工作。

5、啟動(dòng)Activity的消息,會(huì)回調(diào)到ActivityThread中的mH的dispatchMessage方法,可以通過(guò)給mH設(shè)置一個(gè)callBack,在callBack的handleMessage中,然后替換回真正要啟動(dòng)的Intent,然后返回false,讓handleMessage再繼續(xù)處理。

AMS啟動(dòng)過(guò)程分析

點(diǎn)擊桌面圖標(biāo)后,Launcher進(jìn)程訪問(wèn)AMS進(jìn)程請(qǐng)求啟動(dòng)目標(biāo)Activity,采用的跨進(jìn)程方式是AIDL。2 AMS進(jìn)程訪問(wèn)Zygote進(jìn)程請(qǐng)求啟動(dòng)一個(gè)新的進(jìn)程。采用的跨進(jìn)程方式是Socket。3 Zygote進(jìn)程通過(guò)調(diào)用fork函數(shù)創(chuàng)建一個(gè)App進(jìn)程。

AMS主要功能: AMS是Android中最核心的服務(wù),主要負(fù)責(zé)系統(tǒng)中四大組件的啟動(dòng)、切換、調(diào)度及應(yīng)用進(jìn)程的管理和調(diào)度等工作。還負(fù)責(zé)啟動(dòng)或殺死應(yīng)用程序的進(jìn)程。WMS主要功能: 為所有窗口分配Surface。

統(tǒng)一調(diào)試應(yīng)用程序的Activity。應(yīng)用程序要運(yùn)行Activity,首先會(huì)報(bào)告給AmS,然后由AmS決定該Activity是否啟動(dòng)。內(nèi)存管理。

scheduleServiceArg()方法最終通過(guò)調(diào)用handleServiceArgs()方法,回調(diào)Service.onStartCommand()方法。至此,Service的啟動(dòng)過(guò)程分析完畢。

(四)具體流程 Launcher:Launcher通知AMS要啟動(dòng)activity。startActivitySafely-startActivity-Instrumentation.execStartActivity()(AMP.startActivity)-AMS.startActivity AMS:PMS的resoveIntent驗(yàn)證要啟動(dòng)activity是否匹配。

文章標(biāo)題:android應(yīng)用啟動(dòng)流程 android 應(yīng)用啟動(dòng)流程
本文網(wǎng)址:http://muchs.cn/article1/dipopid.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開(kāi)發(fā)、建站公司、網(wǎng)站設(shè)計(jì)公司用戶體驗(yàn)、網(wǎng)站維護(hù)、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)