Activity 生命周期的处理:
schedule
handle
perform
onCreate 的调用流程:
startActivity【Activity】
startActivityForResult
mInstrumentation.execStartActivity【Instrumentation】
ActivityManagerNative.getDefault().startActivity【AMS】
startActivityAsUser
mActivityStarter.startActivityMayWait【ActivityStarter】
startActivityLocked
startActivityUnChecked
mSupervisor.resumeFocusedStackTopActivityLocked()【ActivityStackSupervisor】(在最后,比较难找)
targetStack.resumeTopActivityUncheckedLocked【ActivityStack】
resumeTopActivityInnerLocked
mStackSupervisor.startSpecificActivityLocked【ActivityStackSupervisor】
realStartActivityLocked
app.thread.scheduleLaunchActivity【ApplicationThread】
handleLaunchActivity【ActivityThread】
performLaunchActivity
mInstrumentation.callActivityOnCreate【Instrumentation】
activity.performCreate【Activity】
onCreate
onCreate 之前的操作:
app.thread.scheduleLaunchActivity【ApplicationThread】
==>handleLaunchActivity【ActivityThread】
==>performLaunchActivity
==>mInstrumentation.newActivity // 创建 Activity
-->r.packageInfo.makeApplication // 创建 Application
-->activity.attach // 绑定 ContextImpl
-->mInstrumentation.callActivityOnCreate // 调用 onCreate
onStart 的调用流程:
app.thread.scheduleLaunchActivity【ApplicationThread】
handleLaunchActivity【ActivityThread】
performLaunchActivity
activity.performStart【Activity】
onStart
onResume 的调用流程:
app.thread.scheduleLaunchActivity【ApplicationThread】
handleLaunchActivity【ActivityThread】
handleResumeActivity
performResumeActivity
r.activity.performResume【Activity】
onResume
onCreate、onStart、onResume 的调用时序:
app.thread.scheduleLaunchActivity【ApplicationThread】
==>handleLaunchActivity【ActivityThread】
==>performLaunchActivity
==>mInstrumentation.callActivityOnCreate【Instrumentation】
==>activity.performCreate
-->activity.performStart
-->handleResumeActivity
==>r.activity.performResume