原标题:WatchDog 工作原理(上)
(点击上方公众号,可快速关注)
来源:伯乐在线专栏作者 - gityuan
链接:http://android.jobbole.com/84881/
一、概述
Android系统中,有硬件WatchDog用于定时检测关键硬件是否正常工作,类似地,在framework层有一个软件WatchDog用于定期检测关键系统服务是否发生死锁事件。WatchDog功能主要是分析系统核心服务和重要线程是否处于Blocked状态。
监视reboot广播;
监视mMonitors关键系统服务是否死锁。
二、启动流程
2.1 startOtherServices
[-> SystemServer.java]
privatevoidstartOtherServices(){
...
//创建watchdog【见小节2.2】
finalWatchdogwatchdog=Watchdog.getInstance();
//注册reboot广播【见小节2.3】
watchdog.init(context,mActivityManagerService);
...
mSystemServiceManager.startBootPhase(SystemService.PHASE_LOCK_SETTINGS_READY);
...
mActivityManagerService.systemReady(newRunnable(){
@Override
publicvoidrun(){
mSystemServiceManager.startBootPhase(
SystemService.PHASE_ACTIVITY_MANAGER_READY);
...
// watchdog启动【见小节3.1】
Watchdog.getInstance().start();
mSystemServiceManager.startBootPhase(
SystemService.PHASE_THIRD_PARTY_APPS_CAN_START);
}
}
}
2.2 getInstance
[-> Watchdog.java]
publicstaticWatchdog getInstance(){
if(sWatchdog==null){
//单例模式,创建实例对象【见小节2.2.1 】
sWatchdog=newWatchdog();
}
returnsWatchdog;
}
2.2.1 创建Watchdog
[-> Watchdog.java]
publicclassWatchdogextendsThread{
...
privateWatchdog(){
super("watchdog");
//【见小节2.2.2 】
mMonitorChecker=newHandlerChecker(FgThread