什么是ANR?
全称:Application Not Responding 应用程序无响应;
Activity、BroadcastReceiver、Service都是在主线程的;
应用程序出现下面三种情况就会出现ANR
- Activity操作5s没有响应;
- BroadcastReceiver操作10s没有完成;
- Service操作20s没有返回结果;
如何避免ANR?
- 将主线程的耗时操作(比如:网络访问、Socket通信、查询大量SQL、复杂逻辑计算)都放到子线程中操作,然后通过hanlder.sendMessage、runOnUIThread、AsyncTask等方式更新UI,保证用户界面的流畅度。
- 在Activity的关键方法onCreate() onResume()里可能少的去做创建动作。