startActivity启动的是startActivityForResult
在startActivityForResult中启动了instrumentation的execStartActivity。
Instrumentation因其强大的跟踪application及activity生命周期的功能,用于android 应用测试框架中,被做为基类使用
execStartActivity有一个checkStartActivityResult方法,就是为了会检查将要启动的Activity信息,
如果Activity不存在 会抛出Unable to find explicit activity class;have you declared this activity in your Manifest.xml
看到这个异常激不激动!熟悉吧!
接着在execStartActivity中启动了ActivityManagerNative.getDefault()获取的就是ActivityManagerService在Ibinder中的引用
然后调用了AMS中的startActivity
经过一大推互相调用 之后 走到了ApplicationThread中 通过调用scheduleLunchActivity
在这个方法里,通过一个Handler发送一个消息给H处理,handleLaunchActivity方法来实现
最终通过Instrumentation的newActivity放来 使用类加载器创建这个Activity