ANR的产生与避免
来源:互联网 发布:java动态网页 编辑:程序博客网 时间:2024/05/17 00:50
出处:http://blog.csdn.net/superkris/article/details/7926146
ANR是Application Not Responding的简称,当android某个应用处于长期假死状态时,系统会弹出一个窗口: XXX is not responding, force close or wait。
用户可以选择wait让程序继续运行,在程序里对响应性能的设计很重要,这样系统不会显示ANR给用户。
1 ANR的产生
应用程序的响应性是由Activity Manager和Window Manager系统服务监视的。当它监测到以下情况中的一个时,Android就会针对特定的应用程序显示ANR:
(1)在5秒内没有响应输入的事件(例如,按键按下,屏幕触摸)
(2)BroadcastReceiver在10秒内没有执行完毕
【上面的时间在系统里定义的】
2 如何避免ANR
(1)运行在主线程里的任何方法都尽可能少做事情。Activity应该在它的关键生命周期方法(如onCreate()和onResume())里尽可能少的去做创建操作。
(2)网络或数据库操作,或者高耗时的计算如改变位图尺寸,应该在子线程里来完成或这用异步请求的方式。主线程应该为子线程提供一个Handler,以便完成时能够提交给主线程。
(3)IntentReceiver执行时间的特殊限制意味着它应该做小的、琐碎的工作如保存设定或者注册一个Notification,应用程序应该避免在BroadcastReceiver里做耗时的动作。但不再是在子线程里做这些任务(因为BroadcastReceiver的生命周期短),如果响应Intent广播需要执行一个耗时的动作的话,应用程序应该启动一个Service。如果应用程序在响应Intent广播时需要向用户展示什么,你应该使用Notification Manager来实现。
- ANR的产生与避免
- ANR的产生与避免
- ANR产生的原因及如何避免?
- 产生ANR的原因及如何避免
- Android anr 产生的原因和如何避免
- anr产生的原理和如何避免(待写)
- Android ANR产生的原因及如何避免
- Android ANR产生的原因与解决方法
- Android ANR的产生与分析
- ANR产生的原因
- Android ANR介绍与避免
- Android ANR介绍与避免
- Android ANR介绍与避免
- linux僵死进程的产生与避免
- 僵尸进程的产生与避免
- linux僵死进程的产生与避免
- 避免ANR
- 如何避免Android程序的ANR
- SQL on Hadoop的最新进展及7项相关技术分享
- 基于WebKit的网络爬虫
- ClipDrawable
- 初来乍到
- Web应用的缓存设计模式
- ANR的产生与避免
- Spring 常用ID注入
- iGraph——图挖掘助力社会网络分析
- B. Steps
- Bootstrap
- 2013巨人网络C++笔试题
- CString,char*,const char *,LPCTSTR 的转换
- freemarker一页书
- poj1035