我在网上搜索了什么是ANR。我也研究了这些参考资料。但我不知道Android系统崩溃的细节。
有人能告诉我ANR(Android未响应)和Android中的崩溃之间的区别吗?
发布于 2013-11-26 10:05:41
ANR代表Application Not R。
如果您在UI线程上运行一个进程需要很长的时间(通常大约是5秒),就会出现ANR。在此期间,GUI (图形用户界面)将被锁定,这将导致用户按下的任何内容都不会被激活。在大约5秒之后,如果线程仍未恢复,则会显示一个ANR对话框,通知用户应用程序没有响应,用户可以选择等待,希望应用程序最终恢复,或者强制关闭应用程序。
崩溃是当应用程序中的异常被抛出而未被处理时。例如,如果您试图设置EditText
组件的文本,但是EditText
为null,并且没有that语句来捕获应用程序将崩溃并强制关闭的异常。用户不会看到造成崩溃的原因,他们将看到一个对话框,告诉他们应用程序已经意外关闭,并将给他们发送错误报告的选项。在本例中,如果要查看错误报告,就会看到java.lang.NullPointerException
造成的错误。
发布于 2013-11-26 09:50:53
ANR (Application Not Responding)是由于在主(UI)线程中处理一个长时间运行的任务。如果主线程停止超过5秒,用户将得到一个ANR。
crash是由异常和错误(如、ClassNotFoundException、类型转换或解析错误等)造成的。ANR还会导致应用程序崩溃。
注意:永远不要在UI线程上执行长期运行的任务.
参考ANR
发布于 2018-01-04 14:17:08
ANR和崩溃示例:
这个问题已经有一个被接受的答案,但我增加了两个简单的例子,以更好地理解ANR和崩溃。
ANR:
// this will produce an ANR on your app
int i = 0;
while(true) {
i++;
}
崩溃:
// this will crash your app : will produce java.lang.ArithmeticException
int value = 5, i = 0;
int result = value / i;
https://stackoverflow.com/questions/20213482
复制相似问题