在Android中ANR异常是初学者经常发生的一个异常,这个异常也是Android独有的一个特性了,那么如何解决ANR异常呢,那么就得先了解什么是ANR异常,ANR异常是如何产生的,再去解决ANR异常。
1.什么是ANR异常?
ANR异常是指应用程序未响应,Android系统对于一些事件需要在一定的时间范围内完成,如果超过预定时间能未能得到有效响应或者响应时间过长,都会造成ANR。
2.那么哪些场景会造成ANR呢?
1)Service Timeout:服务在20s内未执行完成;
2)BroadcastQueue Timeout:比如前台广播在10s内执行完成;
3)ContentProvider Timeout:内容提供者执行超时;
4)inputDispatching Timeout: 输入事件分发超时5s,包括按键分发事件的超时。
3.导致ANR常见情形:
1)I/O阻塞;
2)网络阻塞;
3)onReceiver执行时间超过10s;
4)多线程死锁;
4.如何避免ANR异常:
1)UI线程尽量只做跟UI相关的工作;
2)耗时的工作()比如数据库操作,I/O,网络操作),采用单独的工作线程处理;
3)用Handler来处理UIthread和工作thread的交互;