Activity启动三

1、application初始化后就要真正的启动activity了

Activity启动三

2、realStartActivityLocked

Activity启动三

Activity启动三

3、AMS所在进程调用 ActivityThread中的Stub实体对象中的scheduleLaunchActivity方法

Activity启动三

Activity启动三

4、处理消息

Activity启动三

5、加载类

Activity启动三

6、看到ClassLoader是一阵狂喜的,因为项目中用到了Replugin插件化,这里hook了mClassLoader,加载插件中的类也就一清二楚来了,因为校验已经完成,加载哪个类就生成哪个类对象

Activity启动三

7、activity执行attach方法,初始化成员变量

Activity启动三

Activity启动三

8、执行onCreate方法

Activity启动三

Activity启动三

9、onCreate之后进入onStart生命周期,注意stop = false

Activity启动三

10、放入mActivities,

Activity启动三

Activity启动三

11、进入onResume生命周期 

Activity启动三

Activity启动三

12、回调activity中的方法

Activity启动三

13、performRestart()不执行

Activity启动三

14、执行onResume

Activity启动三

15、activity运行后,启动者要进入onStop生命周期,加入Idler

Activity启动三

16、Idler的存放

Activity启动三

 

Activity启动三

17、Idler执行的优先级

Activity启动三

 

18、从上图看idler只执行一次,且当前消息队列为空或者是消息均未到达执行事件点即无执行的消息是执行,执行代码如下图

Activity启动三

19、AMS中的方法

Activity启动三

20、activityIdleInternalLocked

Activity启动三

21、执行stop

Activity启动三

22、scheduleStopActivity

Activity启动三

23、执行stop

Activity启动三

Activity启动三

Activity启动三

Activity启动三