Android 中应用程序Activity的冷启动流程

Android 中应用程序Activity的冷启动流程,第1张

Activity的启动主要涉及四个进程

SystemServer进程:主要负责管理整个Framework

App进程:app用户点击桌面icon时,通过Launcher进程请求SystemServer进程,再通知Zygote孵化的。

Zygote进程:所有的应用进程都是有Zygote孵化出来的,而Zygote进程由init进程孵化出来,init进程的子进程。

Launcher 进程 :Zygote进程孵化的第一个应用进程。

Activity的启动主要涉及到七个阶段

第滚哗一阶段: Launcher通知AMS要启动新的Activity(在Launcher所在的进程执行)

第二阶段:AMS先校验一下Activity的正确性,如果正确的话,会暂存一下Activity的信息。然后,AMS会通知Launcher程序pause Activity(在AMS所在进程执行)

第三阶段: pause Launcher的Activity,并通知AMS已经paused(在Launcher所在进程执行)巧盯

第四阶段:检查activity所在进程是否存在,如果存在,就直接通知这个进程,在该进程孝备和中启动Activity;不存在的话,会调用Process.start创建一个新进程(执行在AMS进程,内部通过socket和Zygote通信,fork一个新进程)

第五阶段: 创建ActivityThread实例,执行一些初始化 *** 作,之后进入Loop循环。(执行在新创建的app进程)

第六阶段:处理新的应用进程发出的创建进程完成的通信请求,并通知新应用程序绑定Application。如果Application不存在,会调用LoadedApk.makeApplication创建一个新的Application对象。并且通知进程启动目标Activity组件(执行在AMS进程)

第七阶段: 加载MainActivity类,调用onCreate声明周期方法(执行在新启动的app进程)

最后我们来简单总结一下Activity的启动流程。

1、startActivity

2、Instrumentation请求AMS启动Activity(Binder)

3、AMS请求Zygote开启进程

4、Zygote创建应用进程

5、应用进程启动ActivityThread(主线程)

6、ActivityThread绑定Application

8、ActivityThread启动Activity

9、调用Activity的onCreate方法

冷启动是在电脑没有通电的情况下加电启动,启动时确实会检查硬件设液源置;

复位启动是通过按主机上的Reset按钮重启电脑,确实不需要重渗拍新开关电源;

热启动是通过按键盘上的热启动组合键重启电脑(一般PC是按Ctrl+Alt+Del;

因为热启动要跳过一些硬件检查步骤,所以热启动引导计算机比冷启动要快。

还有一点区别,就是冷启动和复位启动会清空电脑内存数据,热启动不会清空。所以有时要清除内存中的病毒必须用冷启动或复位启动,而不丛埋羡能用热启动。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12470820.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存