什么是ANR?
ANR即应用程序未响应(Application Not Responding)
造成ANR的主要原因
应用程序的响应性是由Activity Manager和WindowManager系统服务来监视的,当在Activity和Service中超过5秒还未响应用户,则会弹出ANR对话框,在广播中则是10秒。
1.主线程被IO操作阻塞
2.主线程中存在耗时的计算
如何解决ANR?
1. 使用AsyncTask来处理耗时的操作
2. 使用Thread或者HandlerThread并要提高其优先级
3. 使用Handler来处理工作线程的耗时任务
4. Activity的onCreate和onResume回调中尽量避免耗时的代码