Watchdog简介
Watchdog是Android系统提供的以后总检查系统异常的机制,正如其名,“看门狗”,它看的是Android框架层的几个核心服务。Watchdog一旦发现的AMS、WMS和PMS等核心服务的主线程阻塞,就清除systemserver进程,我们知道,一单SystemServer进程停止,Zygote进程就会自杀,系统就会重启。
Watchdog继承Thread,它是一个线程类,它的监控任务运行在独立的线程中,其中有两个非常重要的ArrayList变量,分别是mMonitors和mHandlerCheckers。变量mMonitors存放的是对象Monitor的子类,如AMS、PMS等。对于这类的监控主要是判断它们是否死锁。而对于变量mHandlerCheckers是ArrayList集合,里面存放的是HandlerChecker的对象,Watchdog主要是监控它里面重要的线程的handler是否阻塞,即监控重要线程的消息队列是否阻塞。mMonitors是一个HandlerChecker类型的对象。实际上,HandlerChecker类是Watchdog的核心,它负责对各个监控对象进行监控。具体的对应关系如下图所示: