Android的SystemServer是一个非常复杂的进程,里面运行了70种左右的服务,是最有可能出现问题的进程。因此,有必要设计一种机制,去监控SystemServer中的服务的运行状态。Android开发了Watchdog类作为软件看门狗来监控SystemServer进程。Watchdog一旦监控到服务或者进程发生了问题,便会杀死SystemServer进程,Zygote作为SystemServer的父进程,收到其死亡消息后,会杀死自己。Zygote死亡的消息传递到init进程后,init进程会杀死Zygote的所有子进程并重启Zygote。
public int getCompletionStateLocked() {
if (mCompleted) {
return COMPLETED;
} else {
long latency = SystemClock.uptimeMillis() - mStartTime;
if (latency < mWaitMax/2) {
return WAITING;
} else if (latency < mWaitMax) {
return WAITED_HALF;
}
}
return OVERDUE;
}