ANR相关问题
1. 什么是ANR?
Application Not Responding : 应用程序无响应
如果一个应用无法响应用户的输入,系统就会弹出一个 ANR 对话框。
2. 什么导致了ANR?
通常,如果应用无法响应用户的输入,系统就会发生 ANR。例如:
- 应用在 UI 线程中被I/O 操作(通常是网络请求)阻塞
- 应用在 UI 线程中存在耗时操作(如计算等)
在 Android 系统中,应用的响应受到 Activity Manager 和 Window Manager 这两个系统服务的监控。一旦应用出现以下两种情况,系统就会弹出 ANR 对话框:
- 应用在5秒内未响应用户的输入事件(如按键或触摸事件)
- BroadcastReceiver 未在10秒内完成相关的执行
3. 如何避免ANR?
基本思路:在UI线程中,做的工作越少越好。耗时操作(如网络请求、数据库操作或计算密集型操作)应当在工作线程中完成。
- 使用 AsyncTask
网友评论