1)点击桌面app图标,Launcher(桌面)和system server进程利用Binder进行通信,由system server来进行app启动。
2)system server通过socket方式和Zygote进程通信,告知Zygote我要启动进程。
3)Zygote利用fork()创建App的进程,执行ActivityThread的main()方法,同时初始化出ApplicationThread用以和AMS进行进程通信。ApplicationThread是个Binder
4)App进程会利用Binder告知AMS,让ApplicationThread和AMS进行绑定。
5)AMS利用Binder和App进程通信,初始化Application,创建Activity
6)AMS和App进程的ApplicationThread进行通信,而ApplicationThread和主线程利用handler进行通信。
7)主线程handler收到message之后创建Application调用onCreate,以及Activity的onCreate等方法。