onCreate
由handler机制触发,最终落在了ActivityThread的handleLaunchActivity处
@Override
public Activity handleLaunchActivity(ActivityClientRecord r,
PendingTransactionActions pendingActions, Intent customIntent) {
........
final Activity a = performLaunchActivity(r, customIntent);
........
return a;
}
performLaunchActivity
private Activity performLaunchActivity(ActivityClientRecord r, Intent customIntent) {
ContextImpl appContext = createBaseContextForActivity(r);
Activity activity = null;
try {
java.lang.ClassLoader cl = appContext.getClassLoader();
activity = mInstrumentation.newActivity(
cl, component.getClassName(), r.intent);
} catch (Exception e) {
}
try {
Application app = r.packageInfo.makeApplication(false, mInstrumentation);
if (activity != null) {
//attach过程还把instrumentation传过去了用于初始化,所以说instrumentation只有一个
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, window, r.configCallback);
activity.mCalled = false;
if (r.isPersistable()) {
mInstrumentation.callActivityOnCreate(activity, r.state, r.persistentState);
} else {
mInstrumentation.callActivityOnCreate(activity, r.state);
}
return activity;
}
先是创建activity后来是执行由instrumentation调用的的activity的performCreate,performCreate又调用的onCreate
onStart
public void handleStartActivity(ActivityClientRecord r,
PendingTransactionActions pendingActions) {
// Start
activity.performStart("handleStartActivity");
r.setState(ON_START);
}
final void performStart(String reason) {
//这里去调用onStart了
mInstrumentation.callActivityOnStart(this);
}
其他的都大同小异,就不写了