最近看皇叔的《Android进阶解密》,前三章对Android系统的启动流程、Android应用启动流程、四大组件的启动流程用源码分析的方式,都讲的很明白,收获很多,感觉把以前零散的知识点都串起来了,推荐一波。
Android应用启动流程
- 点击桌面应用图标,Launcher进程将启动Activity(MainActivity)的请求以Binder的方式发送给了AMS。
- AMS接收到启动请求后,交付ActivityStarter处理Intent和Flag等信息,然后再交给ActivityStackSupervisior/ActivityStack 处理Activity进栈相关流程。同时以Socket方式请求Zygote进程fork新进程。
- Zygote接收到新进程创建请求后fork出新进程。
- 在新进程里创建ActivityThread对象,新创建的进程就是应用的主线程,在主线程里开启Looper消息循环,开始处理创建Activity。
- ActivityThread利用ClassLoader去加载Activity、创建Activity实例,并回调Activity的onCreate()方法,这样便完成了Activity的启动。
简单上个步骤流程,挖个坑,慢慢上源码分析。