1 startActivity和startActivityForRescult(),然后走到Instrumatation中的 execStartActivity(),改方法调用到ActivityManagerNative.getDefault().startActivity() 的方法,因为AMS 也是个binder是实现IActivityManager的接口的具体子类,最终调到AMS 中去
2 经过一系列的回调,最终IApplicationThread 接口中,该接口中这个接口也是继承自IInterface 接口,它是作为服务端接收AMS 的指令并且执行,是ActivityThread 与AMS链接的桥梁,因为AMS管理Activity的生命周期和栈,需要和应用程序交互,所以需要ApplicationThread对象
3 最后会回调到ApplicationThread 类中的scheduleLaunchActivity,H 这个Handler 类发送了一个message,然后调用 handleLaunchActivity()。然后调用 performLaunchActivity()这个方法
主要做的事情是
1,将ActivityClientRecord中获取待启动的Activity 的组件信息,
2 通过Instrumentation的newActivity的使用方式使用类的加载器创建Activity对象,
3通过LoadedApk 的makeAppliction方法去创建Appication 对象。
4 创建ContextImpl对象并通过Activity的attach 方法完成一些重要数据的初始化。
5 调用Activity 的onCreate 方法。