Android稳定性问题---ANR问题分析
2017-12-13 15:11
591 查看
1、程序产生ANR的原因
只要应用程序的主线程响应超时,就会产生anr问题,一般子线程的阻塞或者缓慢,只要不影响主线程,一般不会产生anr问题。
2、ANR的类型
ANR分为两类:1、用户输入事件超时;2、获取窗口焦点超时。
输入事件超时:用户输入事件,长时间无相应,会通过一系列回调通知WMS的notifyANR函数报告ANR发生。
获取窗口焦点超时:目的是获取新的窗口,但是在前一个activity的pause,或者焦点窗口resume时间太长。
3、广播超时
当应用程序主线程在执行BroadcastReceiver的onReceive方法时,超时没有执行完毕,就会报出广播超时类型的ANR。对于前台进程超时时间是10秒,后台进程超时时间是60秒。如果需
要完成一项比较耗时的工作,应当通过发送Intent给应用的Service来完成,而不应长时间占用OnReceive主线程。与前两类ANR不同,系统对这类ANR不会显示对话框提示,仅在slog中输出异常信息。
4、service超时
在onstart(),oncreate(),onStop()中如果耗时超过20s没有返回结果,就会爆出anr问题,不会出现提示框,仅仅在log中体现。
5、conttentProvider超时
当主线程在执行ContentProvider相关操作时没有在规定的时间内执行完毕就会发生ANR。
6、anr问题出现的场景
6.1、数据库操作尽量采用异步的方式去做;
6.2、初始化的数据或者控件太多,尽量简化树形结构,采用线程池异步的方式去做;
6.3、大量的创建线程和大对象;
6.4、对大数据排序或者循环;
6.5、访问网络;
6.6、主线程等待子线程的锁。
6.7、系统性能差也会导致anr的发生
以上只是自己解决anr问题时的总结,具体问题还的结合anr第一现场去具体分析。
只要应用程序的主线程响应超时,就会产生anr问题,一般子线程的阻塞或者缓慢,只要不影响主线程,一般不会产生anr问题。
2、ANR的类型
ANR分为两类:1、用户输入事件超时;2、获取窗口焦点超时。
输入事件超时:用户输入事件,长时间无相应,会通过一系列回调通知WMS的notifyANR函数报告ANR发生。
获取窗口焦点超时:目的是获取新的窗口,但是在前一个activity的pause,或者焦点窗口resume时间太长。
3、广播超时
当应用程序主线程在执行BroadcastReceiver的onReceive方法时,超时没有执行完毕,就会报出广播超时类型的ANR。对于前台进程超时时间是10秒,后台进程超时时间是60秒。如果需
要完成一项比较耗时的工作,应当通过发送Intent给应用的Service来完成,而不应长时间占用OnReceive主线程。与前两类ANR不同,系统对这类ANR不会显示对话框提示,仅在slog中输出异常信息。
4、service超时
在onstart(),oncreate(),onStop()中如果耗时超过20s没有返回结果,就会爆出anr问题,不会出现提示框,仅仅在log中体现。
5、conttentProvider超时
当主线程在执行ContentProvider相关操作时没有在规定的时间内执行完毕就会发生ANR。
6、anr问题出现的场景
6.1、数据库操作尽量采用异步的方式去做;
6.2、初始化的数据或者控件太多,尽量简化树形结构,采用线程池异步的方式去做;
6.3、大量的创建线程和大对象;
6.4、对大数据排序或者循环;
6.5、访问网络;
6.6、主线程等待子线程的锁。
6.7、系统性能差也会导致anr的发生
以上只是自己解决anr问题时的总结,具体问题还的结合anr第一现场去具体分析。
相关文章推荐
- Android-ANR问题分析
- Android中的ANR(Application Not Responding)问题分析
- Android ANR问题分析
- Android ANR问题原因分析
- Android ANR问题分析
- android ANR问题分析指北
- Android ANR问题分析[转]
- android 分析ANR问题
- Android ANR问题分析思路
- Android平台上的ANR问题分析方法
- Android ANR问题分析[转]
- 【Android】[转] ANR的分析和问题处理
- Android ANR和Crash问题小结--分析log
- Android ANR问题分析
- Android问题分析之ANR
- Android ANR问题分析思路
- Android权限机制总结与常见权限不足问题分析
- [Android 评论分析] HTML 5是不是解决跨平台问题的终极密钥?
- 编写Android app更新模块遇到的问题分析与总结
- [转]android listview 连续调用 getview问题分析及解决