}
handleLaunchActivity()主要调用了两个方法:performLaunchActivity()和handleResumeActivity()
-
performLaunchActivity:完成Activity的创建,以及调用Activity的 onCreate()和onStart()方法。
-
handleResumeActivity:调用Activity的onResume()方法,处理View的呈现。
performLaunchActivity
我们进入performLaunchActivity()方法,核心代码如下:
private Activity performLaunchActivity(ActivityClientRecord r, Intent customIntent) {
ActivityInfo aInfo = r.activityInfo;
ComponentName component = r.intent.getComponent();
java.lang.ClassLoader cl = r.packageInfo.getClassLoader();
//创建Activity
Activity activity = mInstrumentation.newActivity(cl, component.getClassName(), r.intent);
Application app = r.packageInfo.makeApplication(false, mInstrumentation);
if (activity != null) {
//创建Context
Context appContext = createBaseContextForActivity(r, activity);
CharSequence title = r.activityInfo.loadLabel(appContext.getPackageManager());
Configuration config = new Configuration(mCompatConfiguration);
//调用Activity.attach。
activity.attach(appContext, this, getInstrumentation(), r.token,
r.ident, app, r.intent, r.activityInfo, title, r.parent,
r.embeddedID, r.lastNonConfigurationInstances, config,
r.referrer, r.voiceInteractor);
//省略代码…
//调用Activity.onCreate()方法。
if (r.isPersistable()) {
mInstrumentation.callActivityOnCreate(activity, r.state, r.persistentState);
} else {
mInstrumentation.callActivityOnCreate(activity, r.state);
}
r.activity = activity;
if (!r.activity.mFinished) {
//调用Activity.onStart()方法。
activity.performStart();
}
}
r.paused = true;
mActivities.put(r.token, r);
return activity;
}
performLaunchActivity()主要做了以下几件事:
- 创建Activity。
- 创建Context。
- 调用Activity.attach(),创建Window,关联WindowManager。
- 调用Activity.onCreate()。
- 调用Activity.onStart()。