Android Activity启动流程

startActivity流程

ActivityActivityInstrumentationInstrumentationIActivityManagerIActivityManagerAMSAMSActivityStarterActivityStarterActivityRecordActivityStackSupervisorActivityStackSupervisorActivityStackActivityStackApplicationThreadApplicationThreadActivityThreadActivityThreadstartActivitystartActivityForResultexecStartActivitystartActivitystartActivitystartActivityAsUserstartActivityMayWaitstartActivityLockedstartActivityActivityRecordstartActivitystartActivityUncheckedresumeFocusedStackTopActivityLockedresumeTopActivityUncheckedLockedresumeTopActivityInnerLockedstartSpecificActivityLocked会判断是否启动新的进程realStartActivityLockedscheduleLaunchActivitysendMessage(H.LAUNCH_ACTIVITY, r)handleMessagestartProcessLocked需要启动进程

Activity启动流程

ActivityThreadActivityThreadInstrumentationInstrumentationActivityPhoneWindowDecorViewWindowManagerImplWindowManagerImplWindowManagerGlobalWindowManagerGlobalViewRootImplhandleMessage.LAUNCH_ACTIVITYhandleLaunchActivityinitializeServiceManager.getService("window"))performLaunchActivitynewActivityClassLoader.loadClassnewInstanceActivityattachmWindowPhoneWindowsetWindowManagercallActivityOnCreateperformCreateonCreatesetContentViewDecorViewmContentParent.addViewperformStartcallActivityOnStartonStarthandleResumeActivityperformResumeActivityperformResumecallActivityOnResumeonResumeaddView(decorView)addViewViewRootImplmViews.add(view)mRoots.add(root)mParams.add(wparams)setView WindowManagerGlobalArrayList<View> mViews;ArrayList<ViewRootImpl> mRootsViewDecorViewViewRootImpl1n1n