【面向面试学习】Activity的启动流程是怎样的?

231 阅读1分钟

Activity的完整启动流程,如果细说的话,那将是一件非常复杂的事,涉及的类很多,过程步骤很长,这种深度讲解的文章,网上去搜很多,这里只想写一个精简提纲版,帮助记忆吧。

  1. 启动一个Activity无论是从Launcher,还是从某个App,还是四大组件中的哪一个,都是通过一个Intent去startActivity

  2. 这个Intent会最终通过Binder的方式发送给ActivityManangerService(AMS)

  3. AMS会解析校验传过来的Intent信息,查找手机上是否存在想要启动的Activity,若存在,则记录Activity信息。

  4. 若目标Actiivty所在的App进程没有启动,AMS调用Zygote Fork启动该进程,启动ActivityThread及ApplicationThread(APT)

  5. AMS会通过Binder绑定该进程APT的代理,AMS会发送ActivityClientRecord告诉APT要启动哪个Activity,APT根据这个Record,将具体的Activity创建出来,并创建对应的窗口和UI,并显示出来。