Application_Not_Responding

来源:互联网 发布:ubuntu 14 ssh 编辑:程序博客网 时间:2024/06/08 06:00

1、 什么是ANR
Application Not Responding即应用无响应

2、 ANR类型?
KeyDispatchTimeout5秒,按键事件或触摸事件在特定时间内无响应;
BroadcastTimeout10秒,BroadcastReceiver在特定时间内无法处理完成;
ServiceTimeout20秒,Service在特定的时间内无法处理完成;

 

Service的生命周期方法是运行在UI主线程中,而AIDL中的方法则是运行在Service线程池中,因此,在调用AIDL中方法时最好在子线程中运行;

 

KeyDispatchTimeout
具体的超时时间定义在Framework框架中的ActivityManagerService中;
超时时间的计时一般是从按键分发给APP开始;
超时原因
①当前的事件没有机会得到处理(即当前UI线程正在处理前一个事件,没有及时的完成或Looper被某种原因堵塞);
②当前的事件正在处理,但没有及时完成;

如何避免
UI线程尽量只做跟UI相关的工作;
②耗时工作放入单独的线程中处理;
③尽量使用Handler来处理UI线程和子线程之间的交互;

参考:
http://www.cnblogs.com/blog-wenfeng/p/3513869.html

0 0
原创粉丝点击