由于电脑过老的原因,下载新的SDK比较麻烦,下面内容基于API25源码进行分析。
- activity启动过程其实也是跨进程通信的典型例子,通过在SystemServer进程下的AndroidManagerService来告诉zygote开启应用进程ActivityThread,ActivityThread也就是我们说的应用主进程,生命周期各个状态都是通过ActivityThread来控制的。
- AMS有一个重要功能就是管理app的进程,负责通知zygote开启应用进程
- ActiveThread是每一个应用程序所在进程的主线程,循环的消息处理;
进程分类:
前台进程:官方解释如下,满足下面5中情况任意一种即是前台进程,当前处于前台的activity正在与用户交互;与activity绑定的服务正在与用户交互;服务调用startForeground之后;服务执行生命周期中的onCreate,onStart,onDestroy;广播执行onReceive
可见进程:能被用户看到的,但是不可以交互的,比如activity中弹出对话框
服务进程:一个拥有后台运行service的进程
后台进程:一个带有activity的进程进入后台,onStop被执行,即为后台进程
空进程:内部没有任何组件,作用就是作为缓存数据,应用下次启动的时候能加快启动速度
activity启动源码流程:
以上启动流程图画的比较简陋达到效果就可以了,有问题多多指出。