在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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)