启动流程

Activity startActivity

@Override
public void startActivity(Intent intent) {
	startActivity(intent, null);
}
 
@Override
public void startActivity(Intent intent, Bundle options) {
	if (options != null) {
		startActivityForResult(intent, -1, options);
	} else {
		// Note we want to go through this call for compatibility with
		// applications that may have overridden the method.
		startActivityForResult(intent, -1);
	}
}
 
public void startActivityForResult(Intent intent, int requestCode) {
	startActivityForResult(intent, requestCode, null);

}

startActivityForResult

Instrumentation execStartActivity

ActivityManagerNative#getDefault

ActivityManager#getService

IActivityManger 的实现类是 ActivityManagerService, startActivity 方法

ActivityTaskManagerService#startactivity

ActivityStarter#excute

最终会调到 ApplicationThread scheduleLaunchActivity

ActivityThread#handleLaunchActivity

ActivityThread#performLaunchActivity

resume 之后才开始添加View

Instrumentation

Activity

Instrumentation

Activity 启动流程

参考

Activity启动流程(基于Android26)

startActivity启动过程分析

最后更新于

这有帮助吗?