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循环结束
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循环结束
相关文章推荐
- Android greendao配置及使用
- Android sdk更新,源码下载等
- Android NDK 版本说明
- android gradle编译问题整理贴s
- Android文件Apk下载变ZIP压缩包解决方案
- Android之免费短信验证Mob
- Android 传感器的使用
- android 系统权限说明
- Android概念
- Android Matrix pre post set 三个平移缩放等操作使用
- jsdk+Android开发平台搭建所遇到莫名的错误
- Android DataBinding 配置问题
- Android 中如何实现 显示和隐藏软键盘——附Demo下载
- [Android] 带有输入框(EditText)的提示框(AlertDialog)
- android 蓝牙
- 彻底理解android中的内部存储与外部存储
- Android 获取手机联系人
- android 蓝牙
- android .so 文件提交svn
- android WebService编程