开门狗机制(Watchdog mechanism):开门狗机制是一种用于监控应用程序或系统是否正常运行的机制。类似于现实生活中的看门狗,如果应用程序或系统在一定时间内没有发送心跳信号或响应特定事件,开门狗机制会触发并采取相应的操作,例如重启应用程序或系统,以恢复正常运行。开门狗机制可以帮助应用程序或系统在出现异常情况时进行自我恢复,提高系统的可靠性和稳定性。
开门狗机制是一种软硬件结合的监控机制,用于检测和处理系统或应用程序的死锁、崩溃等异常情况。Android系统中的开门狗机制通常由硬件层面的看门狗(Watchdog)定时器和软件层面的监控程序组成。当系统或应用程序出现异常情况时,如果无法恢复正常状态,开门狗机制会触发系统重启或应用程序的关闭,以保证系统的稳定性和可靠性。
开门狗机制在Android系统中用于监控系统或应用程序的异常情况,并触发相应的处理动作,以确保系统的稳定性。
ANR总结
输入事件(例如按键或屏幕轻触事件等)在 5 秒内没有响应
结合 Android 相关源码分析可知,输入事件的 ANR 检测是基于输入事件本身驱动的,系统要求在 App进程中处理完成每个输入事件后,通知系统进程事件处理完毕,以此判断 App是否无响应
注意:要产生 ANR,至少得有两个输入事件
场景如下:
第一个输入事件产生,系统将其发送给用户当前操作的 App
系统收到第二个事件,发现当前距第一个输入事件发送时间超过 0.5s 仍未处理完毕,则设置一个定时器,5s 后触发;
5s 之后,若系统发现第一个输入事件仍然没有回应时,则触发 ANR,激活 App 中的 Signal Cather 线程生成 traces.txt,然后弹出 ANR 对话框,告知用户 App 无响应;
也就是说,要产生 ANR,第一个输入事件必需在 5.5s 以上没有被处理完成并反馈回系统;并且要有第二个输入事件产生。如果没有第二个输入事件,即便第一个输入事件执行了 60s 或更长时间,也是不会产生 ANR 的;
BroadcastReceiver 在 10 秒内没有执行完成
原理 anr产生原因iao 各种耗时 怎样解决 怎样预防
主线程5s 广播10s 服务20s
主线程卡5s会不会造成anr 不是的
主线程卡5s 当A触发点击事件 B马上触发会造成anr 如果后面没有触发就不会造成
InputManager 收到广播
可以使用本地adb bugreport解决