Android平台上的ANR问题分析方法
2012-11-16 10:37
417 查看
ANR是Application Not Responding的缩写。
在Android,系统会监视应用进程的响应性。如果一段时间没有相应,系统会弹出对话框提示用户是否选择关闭该程序或是继续等待。
监控ANR的系统服务程序是WindowManagerService和ActivityManagerService。
一般说来,ANR都是由用户输入来驱动的。举例:一个应用的UI线程正在进行一个耗时操作(如访问网络,大量写入数据到数据库等等),此时应用阻塞了I/O操作,使得系统无法处理用户的输入事件。此时系统可能会认为该应用出现了什么状况,从而会导致ANR。
ANR目前包括2种类型:
1) 5秒中没有响应输入事件(如:按键或触屏)
2)10秒内,BroadcastReceive没有执行完
分析ANR的root cause时,需要从main log中确定是哪个应用进程出现了ANR,然后再找到该进程的call stack,从而知道该进程在发生ANR之前调用了什么函数,该函数很可能是罪魁祸首, 很可能就是它在执行时出现了什么问题或执行的时间过长,阻塞了应用的UI线程。
在Android,系统会监视应用进程的响应性。如果一段时间没有相应,系统会弹出对话框提示用户是否选择关闭该程序或是继续等待。
监控ANR的系统服务程序是WindowManagerService和ActivityManagerService。
一般说来,ANR都是由用户输入来驱动的。举例:一个应用的UI线程正在进行一个耗时操作(如访问网络,大量写入数据到数据库等等),此时应用阻塞了I/O操作,使得系统无法处理用户的输入事件。此时系统可能会认为该应用出现了什么状况,从而会导致ANR。
ANR目前包括2种类型:
1) 5秒中没有响应输入事件(如:按键或触屏)
2)10秒内,BroadcastReceive没有执行完
分析ANR的root cause时,需要从main log中确定是哪个应用进程出现了ANR,然后再找到该进程的call stack,从而知道该进程在发生ANR之前调用了什么函数,该函数很可能是罪魁祸首, 很可能就是它在执行时出现了什么问题或执行的时间过长,阻塞了应用的UI线程。
相关文章推荐
- Android的ListView异步加载图片时,错位、重复、闪烁问题的分析及解决方法
- Android的死机、重启问题分析方法
- Android中的ANR(Application Not Responding)问题分析
- android crash 四 ANR原因分析及解决方法
- Android平台上面输入法遮挡问题的解决方法
- iOS 混合应用的关键点分析 - 仿 Android 平台 WebView 可注入本地对象方法的功能实现要点
- Android平台通用安全问题分析及策略(一) 推荐
- Android ANR 分析解决方法
- 关于Android发送短信字数问题的分析及解决方法
- Android ANR 分析解决方法
- Android ANR问题分析
- Android 内存溢出(OOM)问题分析方法
- Android ANR问题分析思路
- Android ANR 分析解决方法
- 【Android】[转] ANR的分析和问题处理
- android anr分析方法
- android anr分析方法
- Android平台接入微信所遇到问题并且解决方法
- Android ANR问题介绍和处理方法
- Android ANR 分析解决方法