Adnroid中的Main()函数所在
查看startActivity()
可以知道最终调用了startActivityForResult()
查看startActivityForResult()
可以知道调用了execStartActivity()
其中的mMainThread.getApplicationThread()
mMainThread即为ActivityThread,代表应用程序,而我们开发中常用的Application其实是ActivityThread的上下文
而main()函数就在ActivityThread中
APP启动流程:
当点击一个App图标时,如果对应的应用进程还没有创建则会通过Binder IPC通知到AMS创建应用进程
应用进程启动后会执行我们所熟悉的main方法,而这个main方法则位于ActivityThread这个类中,main方法对应的就是Android主线程
ActivityThread的main方法首先会调用Looper.loop(),用来循环处理主线程Hanlder分发的消息。
接下来的main方法会发送一个BIND_APPLICATION的消息,Looper收到后会通过Binder IPC通知AMS创建App进程对应的Application
Application创建后会再次通过Binder IPC通知AMS要创建Activity,AMS验证后会回到App进程,
回到App进程后会间接调用ActivityThread#performLaunchActivity()来真正启动创建Activity,并且执行attach()和onCreate()。

浙公网安备 33010602011771号