启动流程
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

参考
最后更新于
这有帮助吗?