ANR产生的原因是什么?

1 UI线程正在响应另外的事件,当前事件被阻塞

2 当前事件在UI线程中处理,但由于耗时太长没有及时完成

3 broadcastReceiver超过10s响应时间

4 在service中执行耗时操作

典型场景:

  • UI线程进行网络请求、数据库操作、文件操作等,导致UI线程无法计算处理用户输入;

  • UI线程等待子线程释放某个锁,从而无法处理用户输入请求;

  • 耗时的动画需要大量计算,导致CPU负载过重。