源码分析之android程序如何启动,activity生命周期如
2019-04-11 本文已影响21人
wintersweett
源码版本28
ActivityThread为android的主线程
程序入口ActivityThread 的main()方法中
![](https://img.haomeiwen.com/i3587320/31c6566b63cc8004.png)
跟进attach方法,继续跟进getService方法,可以发现调用了系统服务,并且给出了一个binder接口如图3
mAppThread为ThreadApplication的一个对象,ThreadApplication为activity的各种状态做了相对应的工作如图4
![](https://img.haomeiwen.com/i3587320/644ce616617faf3e.png)
![](https://img.haomeiwen.com/i3587320/47e550fbdb0927f5.png)
而ApplicationThread中一系列类似于activity中生命周期的方法,跟进sendMessage方法
![](https://img.haomeiwen.com/i3587320/6ed2428684b203c3.png)
![](https://img.haomeiwen.com/i3587320/602cc26a6a739cdc.png)
找到handleMessage方法
![](https://img.haomeiwen.com/i3587320/6069b0739578d8ba.png)
Application运行的过程当中,对于Activity的操作,状态转变,其实实际上是通过Handler消息机制来完成的,
Application当中只管去发, 由消息机制负责调用,因为在main方法当中我门的Looper轮训器是一直在进行轮训的
而当我们在加载Activity的时候,当中调用了一个performLaunchActivity()方法,在这个中间我发现了我们onCreate的调用痕迹
![](https://img.haomeiwen.com/i3587320/3c8824364f8c63bf.png)
![](https://img.haomeiwen.com/i3587320/536a68ee7f867479.png)