classDiagram

class Context {
	<>
	
}

class ContextImpl 

class ContextWrapper

ContextImpl --|> Context
ContextWrapper --|> Context
ApplicationContext --|> Context

note for ContextThemeWrapper "A context wrapper that allows you to modify or replace the theme of the
wrapped context."
class ContextThemeWrapper {
	+ setTheme(Theme theme)
}

class Activity

ContextThemeWrapper --|> ContextWrapper
Application --|> ContextWrapper
Service --|> ContextWrapper

class WindowProvider {
	<>
	+ int getWindowType()
	+ Bundle getWindowContextOptions()
}
WinodowContext --|> ContextWrapper
WinodowContext --|> WindowProvider
WindowProviderService --|> WindowProvider
AbstractInputMethodService --|> WindowProviderService



Activity --|> ContextThemeWrapper

Activity启动流程

sequenceDiagram
Activity ->> Instrumenttation: execStartActivity
Instrumenttation ->> ActivityTaskManagerService: startActivityAsUser
ActivityTaskManagerService ->> ActivityStarter: execute
ActivityStarter ->> ActivityStarter: executeRequest
ActivityStarter ->> ActivityStarter: startActivityUnchecked
ActivityStarter ->> ActivityStarter: startActivityInner
ActivityStarter ->> RootTask: startActivityLocked
RootTask ->> StartingSurfaceController: showStartingWindow
StartingSurfaceController ->> ActivityRecord: showStartingWindow
ActivityRecord ->> ActivityRecord: addStartingWindow
ActivityRecord ->> ActivityRecord: createSnapshot
ActivityRecord ->> ActivityRecord: scheduleAddStartingWindow

最近任务启动流程

sequenceDiagram
ActivityTaskManagerService ->> ActivityTaskSupervisor: startActivityFromRecents
ActivityTaskSupervisor ->> RootWindowContainer: anyTaskForId
RootWindowContainer ->> ActivityTaskSupervisor: restoreRecentTaskLocked
ActivityTaskSupervisor ->> RootWindowContainer: getOrCreateRootTask
RootWindowContainer ->> TaskDisplayArea: getOrCreateRootTask
ActivityTaskSupervisor ->> ActivityStartController: startActivityInPackage
ActivityStartController ->> ActivityStarter: startActivityInner
ActivityStarter ->> ActivityStarter: getOrCreateRootTask
ActivityStarter ->> RootWindowContainer: getOrCreateRootTask
RootWindowContainer ->> TaskDisplayArea: getOrCreateRootTask

Activity启动流程

sequenceDiagram
ActivityThread ->> ActivityThread: handleLaunchActivity
ActivityThread ->> Instrumentation: newActivity
Instrumentation ->> Activity: attach
Note over ActivityThread,Instrumentation: 实例化Activity
ActivityThread ->> LoadedApk: makeApplicationInner
ActivityThread ->> Instrumentation: callActivityOnCreate
Instrumentation ->> Instrumentation: prePerformCreate
Instrumentation ->> Activity: performCreate
Activity ->> Activity: onCreate
Instrumentation ->> Instrumentation: postPerformCreate

LocalActivityManager ->> ActvivityThread: performResumeActivity
ActivityThread ->> Activity: handleResumeActivity
ActivityThread ->> Activity: performResume
Activity ->> Activity: performRestart
Activity ->> Activity: callActivityOnStart