Activity 的启动流程

1 startActivity和startActivityForRescult(),然后走到Instrumatation中的 execStartActivity(),改方法调用到ActivityManagerNative.getDefault().startActivity() 的方法,因为AMS 也是个binder是实现IActivityManager的接口的具体子类,最终调到AMS 中去

2   经过一系列的回调,最终IApplicationThread 接口中,该接口中这个接口也是继承自IInterface 接口,它是作为服务端接收AMS 的指令并且执行,是ActivityThread AMS链接的桥梁,因为AMS管理Activity的生命周期和栈,需要和应用程序交互,所以需要ApplicationThread对象

3  最后会回调到ApplicationThread 类中的scheduleLaunchActivity这个Handler 类发送了一个message,然后调用 handleLaunchActivity()。然后调用 performLaunchActivity()这个方法

主要做的事情是

1,将ActivityClientRecord中获取待启动的Activity 的组件信息,

2 通过Instrumentation的newActivity的使用方式使用类的加载器创建Activity对象,

3通过LoadedApk 的makeAppliction方法去创建Appication 对象。

4 创建ContextImpl对象并通过Activity的attach 方法完成一些重要数据的初始化。

5 调用Activity 的onCreate 方法。

 

 

外观模式

我们在开始创建和加载Activity 的时候执行

1 , performLaunchActivity 这个地方是执行activity 的onCreate() 方法,

这个地方拆分5个小点:

1 创建Activity

 2 创建application

3 构建ContextImpl()

4 activity 和 context 和application 关联起来

5 回调Activity 的oncreate 方法

2,  然后执行handleResumeActivity,执行onResume,使得Activity 变的可见。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值