ANR异常总结

在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的交互;

       

猜你喜欢

转载自blog.csdn.net/qq_33429583/article/details/80208560
ANR