Application_Not_Responding
来源:互联网 发布:ubuntu 14 ssh 编辑:程序博客网 时间:2024/06/08 06:00
1、 什么是ANR?
Application Not Responding即应用无响应
2、 ANR类型?
①KeyDispatchTimeout,5秒,按键事件或触摸事件在特定时间内无响应;
②BroadcastTimeout,10秒,BroadcastReceiver在特定时间内无法处理完成;
③ServiceTimeout,20秒,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