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