本文没啥用 不涉及任何优化 但是总感觉不总结一下说不过去 因为我们毕竟分析的是启动优化 这个不了解透彻感觉本末倒置了 所以就简单整理了一下
以launcher为例(毕竟做启动优化主要针对的是冷启动)
startActivity
查询符合要求的activity并让用户选择
创建activity record
为activity创建或找到task并设置flags
如果目标进程不存在 创建进程(下面是创建进程)
launcher.AMP as binder client->system_server
system_server-socket->zygote
zygote fork
新进程.AMP as binder client->system_server,把自己的application汇报给system_server.AMS
system_server.ATP as binder client->新进程
新进程.ActivityThread.ApplicationThread发消息
新进程ActivityThread.H处理消息,回调周期
先反射创建Activity
onCreate通过xmlParser、反射拿到view
onResume后setDecor to phoneWindow,开始绘制
绘制成功后phoneWindow替换预显示的bg window
oh堪称完美