ANR,application not response(应用程序无响应).Android的应用程序完全运行在一个独立的线程(main)里,这就意味着,任何在主线程运行的,需要消耗大量时间的操作都会引发ANR。
一般情况下,
1. 在Activity的各个生命周期里,执行操作超过5秒无响应;
2. 在Broadcast Receiver里超过10秒;
3. 在service里超过20秒。
都会引发ANR。
如何避免?
不要再主线程里做耗时操作。如果需要耗时操作,可以开启一个子线程来运行。
Broadcast Receiver要执行耗时操作,可以启动一个service,将耗时操作交给service来执行 。因为它的生命周期比较短。如果要响应Intent广播时,如果需要向用户展示什么,可以使用Notification Manager来实现。