- Activity # startActivity
- Activity # startActivityForResult
- Instrumentation # execStartActivity
- ActivityTaskManagerService # startActivity
- ActivityTaskManagerService # startActivityAsUser
- ActivityStarter # execute
- ActivityStarter # executeRequest
- ActivityStarter # startActivityUnchecked 在这里进行一些检查
- ActivityStarter # startActivityInner 在startActivityInner()的时候,基本上已经检查完毕了,会先去进行状态的初始化,也就是从AcitivityRecord当中将对应的参数存储到本地使用等。
- Task # startActivityLocked 在这里开始,启动Activity的任务就交给了Task处理,不再交给ActivityStack进行处理了
- Task # ensureActivitiesVisible
- Task # forAllLeafTasks(task -> task.mEnsureActivitiesVisibleHelper.process) 在Android12上,采用的大量的Consumer的方式进行事件的处理
- EnsureActivitiesVisibleHelper # process
- EnsureActivitiesVisibleHelper # setActivityVisibilityState
- ActivityRecord # makeActiveIfNeeded
- Task # resumeTopActivityUncheckedLocked 通过ActivityRecord getRootTask来进行后续处理
- Task # resumeTopActivityInnerLocked
- ActivityTaskSupervisor # startSpecificActivity
- ActivityTaskSupervisor # realStartActivityLocked 在这里会进行Transaction的封装,封装了LaunchActivityItem类型的Transaction
- ClientLifecycleManager # scheduleTransaction
- ClientTransaction # schedule()
- IApplicationThread(ApplicationThread为该aidl接口的实现类) # scheduleTransaction
- ActivityThread(ClientTransactionHandler为ActivityThread的父类,交由其父类处理) # scheduleTransaction
- ClientTransactionHandler # scheduleTransaction 该方法会发送一个Message ActivityThread.H.EXECUTE_TRANSACTION
- ActivityThread # handleMessage 接着交由TransactionExecutor进行处理
- TransactionExecutor # execute() 交由TransactionExecutor处理事务
- TransactionExecutor # executeCallbacks 向注册的监听回调对应的状态
- LaunchActivityItem # execute
- ClientTransactionHandler(ActivityThread) # handleLaunchActivity
- ActivityThread # performLaunchActivity
- Instrumentation # callActivityOnCreate
- Activity # performCreate
- Activity # onCreate