ANR异常:
ANR
异常:
application not response. 应用程序无响应.
1、所有的操作系统的ui 死循环 不停检查是不是有新的消息
2、如果android系统发现主线程在单位时间内没有响应了. 接受不到新的消息. 不能响应新的
消息了.
3、主线程很重要:
a) 更新ui
b) 用户的点击事件.
c) 线程被阻塞 应用程序就会报告anr的异常
4、避免ANR的异常:
耗时的操作 ,不能把他写在主线程里面,写在单独子线程. 应用的响应性(Responsive) 在Android中,应用的响应性被活动管理器(Activity Manager)
和窗口管理器(Window Manager)这两个系统服务所监视。
当用户触发了输入事件(如键盘输入,点击按钮等),
如果应用6秒内没有响应用户的输入事件,那么,Android会认
为该应用无响应,便弹出ANR(Application No Response)
对话框。如下图。
在正常情况下,Android程序会在一条单线程里运行。如果Activity要处理一件比较耗时的工作,应该交给子线程完成,否侧会因为主线程被阻塞,后面的用户输入事件因没能在5秒内响应,导致应用出现ANR对话框。
|