watchdog解析

源码位置:frameworks/base/services/core/java/com/android/server/Watchdog.java

Watchdog
在 SystemServer.java 启动,

HandlerChecker :

HandlerChecker 会把它的run方法提交给 它的变量 Handler中去执行,
如果run很快返回,那就说明这个Handler 运行正常,没有超时。

在其run方法中会去调用它的变量的 mMonitors数组中的每一个
Monitor的 monitor()方法,
Monitor 为接口,其实际的实际对象有如下类:
在这里插入图片描述
它的作用是检测这个类是否有死锁产生。

在调用run之前先取得当前时间,然后提交run给handler ,
后期再来调用这个 HandlerChecker 的 getCompletionStateLocked() 来查看完成状态,有4种类型: COMPLETED , WAITING,WAITED_HALF ,OVERDUE .
COMPLETED 表示 run方法是否已经执行完毕,
如果已经完成,则直接返回。
如果没有完成,则肯定超时了。
关于超时时间,有以下三个定义:
如果当前超时时间 latency 小于规定的超时时间的一半,则当前状态是
WAITING,
如果当前超时时间 latency 大于规定的超时时间的一半但小于规定的超时时间, 则当前状态是 WAITED_HALF 。
如果当前超时时间 latency 大于规定的超时时间, 则当前状态是 OVERDUE。

如果超时,则关闭系统:

   Process.killProcess(Process.myPid());
                System.exit(10);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值