您的位置:首页 > 移动开发 > Android开发

android 看门狗

2016-05-17 10:47 309 查看
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循环结束
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: