有关android ANR
2014-11-26 14:29
204 查看
ANR一般有三种类型:
1:KeyDispatchTimeout(5 seconds)
按键或触摸事件在特定时间内无响应
2:BroadcastTimeout(10 seconds)
BroadcastReceiver在特定时间内无法处理完成
3:ServiceTimeout(20 seconds)
Service在特定的时间内无法处理完成
KeyDispatchTimeout
Akey or touch event was not dispatched within the specified time(按键或触摸事件在特定时间内无响应)
具体的超时时间的定义在framework下的
ActivityManagerService.java
//How long we wait until we timeout on key dispatching.
staticfinal int KEY_DISPATCHING_TIMEOUT = 5*1000
超时时间的计数一般是从按键分发给app开始。超时的原因一般有两种:
(1)当前的事件没有机会得到处理(即UI线程正在处理前一个事件,没有及时的完成或者looper被某种原因阻塞住了)
(2)当前的事件正在处理,但没有及时完成
如何避免KeyDispatchTimeout
1:UI线程尽量只做跟UI相关的工作
2:耗时的工作(比如数据库操作,I/O,连接网络或者别的有可能阻碍UI线程的操作)把它放入单独的线程处理
3:尽量用Handler来处理UIthread和别的thread之间的交互
1:KeyDispatchTimeout(5 seconds)
按键或触摸事件在特定时间内无响应
2:BroadcastTimeout(10 seconds)
BroadcastReceiver在特定时间内无法处理完成
3:ServiceTimeout(20 seconds)
Service在特定的时间内无法处理完成
KeyDispatchTimeout
Akey or touch event was not dispatched within the specified time(按键或触摸事件在特定时间内无响应)
具体的超时时间的定义在framework下的
ActivityManagerService.java
//How long we wait until we timeout on key dispatching.
staticfinal int KEY_DISPATCHING_TIMEOUT = 5*1000
超时时间的计数一般是从按键分发给app开始。超时的原因一般有两种:
(1)当前的事件没有机会得到处理(即UI线程正在处理前一个事件,没有及时的完成或者looper被某种原因阻塞住了)
(2)当前的事件正在处理,但没有及时完成
如何避免KeyDispatchTimeout
1:UI线程尽量只做跟UI相关的工作
2:耗时的工作(比如数据库操作,I/O,连接网络或者别的有可能阻碍UI线程的操作)把它放入单独的线程处理
3:尽量用Handler来处理UIthread和别的thread之间的交互
相关文章推荐
- 与Android有关的三起诉讼事件
- First time of lauching android application to anrdoir market
- Android ANR
- 避免Android开发中的ANR
- 有关android中多级联动问题的解决
- 避免Android开发中的ANR
- 今天遇到一个奇怪的问题 android:sharedUserId有关
- android - ANR keyDispatchingTimedOut
- Android ANR是什么
- 有关Android调用服务全解析
- Android 中的ANR 问题,响应灵敏性
- Android ANR
- flash 10.1对android系统的支持等有关信息总结
- Android不支持宽字符 (wchar_t*,及有关宽字符的一些函数运行结果不正确)(wchar_t, wcslen, wcstombs, std::wstring)
- 阅读android有关sensor的源码总结
- 有关android中“Activity伪装”的Dialog问题的解决
- Android中有关布局的几个问题
- 有关android的权限
- 避免Android开发中的ANR
- Android 中的ANR 问题,响应灵敏性