File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -203,6 +203,7 @@ Android平台的基础是Linux内核,比如ART虚拟机最终调用底层Linux
203203 - 预加载类preloadClasses:preloadClass函数的执行时间比较长,这是导致Android系统启动慢的原因之一。
204204 - 预加载资源preloadResouces:它主要是加载framework-res.apk中的资源。在UI编程中常使用的com.android.R.XXX资源是系统默认的资源,它们就是由Zygote加载的。
205205- System Server进程,是由Zygote进程fork而来,` System Server是Zygote孵化的第一个进程 ` ,System Server负责启动和管理整个Java framework,包含ActivityManager,WindowManager,PackageManager,PowerManager等服务,也就是说Java中的核心Service都在这里启动。同时会启动Binder通信系统,调用Looper.loop()启动消息循环。
206+ 另外System Server进程还会启动一个Watch Dog的现成。Watch Dog的中文意思是“看门狗”。我依稀记得其最初存在的意义是因为早期嵌入式设备上的程序经常“跑飞”(比如说电磁干扰等),所以专门设置了一个硬件看门狗,每隔一段时间,看门狗就去检查一下某个参数是不是被设置了,如果发现该参数没有被设置,则判断为系统出错,然后就会强制重启。在软件层面上,Android对SystemServer的参数是否被设置也很谨慎,所以专门为它增加了一条看门狗,可它看的是哪个门呢?就是看几个重要Service的门,一旦发现Service出了问题,就会杀掉system_server,而这也会使zygote随其一起自杀,最后导致重启Java世界。具体实现是隔一段时间给另外一个线程发送一条MONITOR消息,那个线程将检查各个Service的健康情况。而看门狗会等待检查结果,如果第二次还没有返回结果,那么它会杀掉SS。
206207- Media Server进程,是由init进程fork而来,负责启动和管理整个C++ framework,包含AudioFlinger,Camera Service等服务。
207208- Zygote进程孵化出的第一个App进程是Launcher,这是用户看到的桌面App;
208209- Zygote进程还会创建Browser,Phone,Email等App进程,每个App至少运行在一个进程上。
You can’t perform that action at this time.
0 commit comments