文件:/ frameworks / base / services / core / java / com / android / server / wm / WindowState.java 能看到實際上這個過程誕生了一個很重要的對象InputWindowHandle,輸入窗口的句柄。
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供文登網(wǎng)站建設(shè)、文登做網(wǎng)站、文登網(wǎng)站設(shè)計、文登網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、文登企業(yè)網(wǎng)站模板建站服務(wù),10年文登做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
Activity啟動流程(從Launcher開始):第一階段: Launcher通知AMS要啟動新的Activity(在Launcher所在的進程執(zhí)行)第二階段:AMS先校驗一下Activity的正確性,如果正確的話,會暫存一下Activity的信息。
啟動者Activity向Instrumentation請求啟動目標的Activity。 Instrumentation通過AMS在App進程的IBinder接口(IActivityManager)訪問AMS,此時App進程會阻塞等待AMS的調(diào)用返回,采用的跨進程通信技術(shù)是AIDL。
啟動Activity的消息,會回調(diào)到ActivityThread中的mH的dispatchMessage方法,可以通過給mH設(shè)置一個callBack,在callBack的handleMessage中,然后替換回真正要啟動的Intent,然后返回false,讓handleMessage再繼續(xù)處理。
ATM啟動最終調(diào)用的是ActivityTaskManagerService.Lifecycle.onStart()來啟動ATM服務(wù)的 源碼:ActivityTaskManagerService.java#Lifecycle.class 將ActivityTaskManagerInternal添加到本地服務(wù)的全局注冊表中。
Activity的四種啟動模式: standard 模式啟動模式,每次激活A(yù)ctivity時都會創(chuàng)建Activity,并放入任務(wù)棧中。
:startActivity 主要就是應(yīng)用進程與 system_server 進程的 AMS 通信,AMS 是實際來管理 Activity 組件的,負責(zé)處理啟動模式,維護 Activity 棧等工作。
1、在 ActivityStarter. executeRequest 方法中先做一系列的檢查,包括調(diào)用進程的檢查、Intent的檢查、權(quán)限的檢查、向PKMS獲取啟動Activity的ActivityInfo等信息,然后調(diào)用 startActivityUnchecked 方法開始對要啟動的Activity做堆棧管理。
2、前面realStartActivityLocked方法中通過addCallback,傳入?yún)?shù)LaunchActivityItem。
3、Activity啟動流程分兩種,一種是啟動正在運行的app的Activity,即啟動子Activity。如無特殊聲明默認和啟動該activity的activity處于同一進程。如果有聲明在一個新的進程中,則處于兩個進程。
4、:startActivity 主要就是應(yīng)用進程與 system_server 進程的 AMS 通信,AMS 是實際來管理 Activity 組件的,負責(zé)處理啟動模式,維護 Activity 棧等工作。
5、啟動Activity的消息,會回調(diào)到ActivityThread中的mH的dispatchMessage方法,可以通過給mH設(shè)置一個callBack,在callBack的handleMessage中,然后替換回真正要啟動的Intent,然后返回false,讓handleMessage再繼續(xù)處理。
點擊桌面圖標后,Launcher進程訪問AMS進程請求啟動目標Activity,采用的跨進程方式是AIDL。2 AMS進程訪問Zygote進程請求啟動一個新的進程。采用的跨進程方式是Socket。3 Zygote進程通過調(diào)用fork函數(shù)創(chuàng)建一個App進程。
AMS主要功能: AMS是Android中最核心的服務(wù),主要負責(zé)系統(tǒng)中四大組件的啟動、切換、調(diào)度及應(yīng)用進程的管理和調(diào)度等工作。還負責(zé)啟動或殺死應(yīng)用程序的進程。WMS主要功能: 為所有窗口分配Surface。
統(tǒng)一調(diào)試應(yīng)用程序的Activity。應(yīng)用程序要運行Activity,首先會報告給AmS,然后由AmS決定該Activity是否啟動。內(nèi)存管理。
scheduleServiceArg()方法最終通過調(diào)用handleServiceArgs()方法,回調(diào)Service.onStartCommand()方法。至此,Service的啟動過程分析完畢。
(四)具體流程 Launcher:Launcher通知AMS要啟動activity。startActivitySafely-startActivity-Instrumentation.execStartActivity()(AMP.startActivity)-AMS.startActivity AMS:PMS的resoveIntent驗證要啟動activity是否匹配。
文章標題:android應(yīng)用啟動流程 android 應(yīng)用啟動流程
本文網(wǎng)址:http://chinadenli.net/article1/dipopid.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、建站公司、網(wǎng)站設(shè)計公司、用戶體驗、網(wǎng)站維護、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)