android 看门狗

  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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值