ANR是什么意思?

ANR是什么意思?,第1张

ANR(Application Not Responding)定义

在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。所以一个流畅的合理的应用程序中不能出现anr,而让用户每次都要处理这个对话框。因此,在程序里对响应性能的设计很重要,这样系统不会显示ANR给用户。默认情况下,在android中Activity的最长执行时间是5秒,BroadcastReceiver的最长执行时间则是10秒。

anr监测需要开启。anr指程序未响应,这时系统会向用户d出一个提示框,让用户选择继续等待或确定关闭应用,当应用不能够灵敏地响应用户的 *** 作时anr就会出现。这样就能在系统死机的时候关闭程序避免一直处于死机状态。

应用anr的检测方案:

1、BlockCanary

BlockCanary是国内开发者markzhai开发的一款非侵入式的轻量性能监控组件,在Github上有接近4000 star。原理巧妙地利用了Android原生Looper.loop中的一个log打印逻辑。

2、ANR-WatchDog

ANR-WatchDog是参考Android WatchDog机制起个单独线程向主线程发送一个变量+1 *** 作,自我休眠自定义ANR的阈值,休眠过后判断变量是否+1完成,如果未完成则告警。

3、SafeLooper

SafeLooper是个比较新奇的思路,本身就是一个堵塞的消息,在自己内部进行消息的处理,通过反射接管主线程Looper的功能。

以上内容参考:百度百科-ANR


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5790587.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-01-31
下一篇 2023-01-31

发表评论

登录后才能评论

评论列表(0条)

保存