android 看门狗

来源:互联网 发布:薛冰是怎么死的 知乎 编辑:程序博客网 时间:2024/06/06 17:55

  android看门狗流程:

  1.看门狗是一个线程,专门检测系统的重要进程有无异常,死锁。如发现,杀死进程

   2.看门狗每个一段时间就让检测的进程获取一次锁,如果超时获取不到,则杀死进程


看门狗看护的进程都会继承Monitor接口,例如
public class ActivityManagerService extends ActivityManagerNative implements Watchdog.Monitor, BatteryStatsImpl.BatteryCallback
通过两步让看门狗看门
 Watchdog.getInstance().addMonitor(this);     //this 就是指ActivityManagerService 
 Watchdog.getInstance().addThread(mHandler); 
  
//通过 monitor()方法获取ActivityManagerService 的锁,如果ActivityManagerService 发生死锁的话,则获取不到锁
public void monitor() {                       
  synchronized (this) { }
}


整体流程:

//在一个死循环里面检测

while(true){


//每个线程都去搞一下锁,看能不能搞到锁(每个线程都记住自己开始搞锁的时间mStartTime,有没有搞到锁的标志mCompleted)

 for (int i=0; i<mHandlerCheckers.size(); i++) {
                    HandlerChecker hc = mHandlerCheckers.get(i);
                    hc.scheduleCheckLocked();//去搞锁

}

上面每个线程开始搞锁之后,就休息30s,30s后查看他们有没有搞到锁

sleep(30000);休息30s

30s过去了,要收卷了,看各个线程搞到锁没有,没有搞到锁的话就悲剧了,手机会自动重启

final int waitState = evaluateCheckerCompletionLocked();


  }        //while循环结束




0 0
原创粉丝点击