首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Android系统中,ANR和崩溃有什么区别?

在Android系统中,ANR和崩溃有什么区别?
EN

Stack Overflow用户
提问于 2013-11-26 09:48:16
回答 13查看 62.8K关注 0票数 50

我在网上搜索了什么是ANR。我也研究了这些参考资料。但我不知道Android系统崩溃的细节。

有人能告诉我ANR(Android未响应)和Android中的崩溃之间的区别吗?

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2013-11-26 10:05:41

ANR代表Application Not R

如果您在UI线程上运行一个进程需要很长的时间(通常大约是5秒),就会出现ANR。在此期间,GUI (图形用户界面)将被锁定,这将导致用户按下的任何内容都不会被激活。在大约5秒之后,如果线程仍未恢复,则会显示一个ANR对话框,通知用户应用程序没有响应,用户可以选择等待,希望应用程序最终恢复,或者强制关闭应用程序。

崩溃是当应用程序中的异常被抛出而未被处理时。例如,如果您试图设置EditText组件的文本,但是EditText为null,并且没有that语句来捕获应用程序将崩溃并强制关闭的异常。用户不会看到造成崩溃的原因,他们将看到一个对话框,告诉他们应用程序已经意外关闭,并将给他们发送错误报告的选项。在本例中,如果要查看错误报告,就会看到java.lang.NullPointerException造成的错误。

票数 113
EN

Stack Overflow用户

发布于 2013-11-26 09:50:53

ANR (Application Not Responding)是由于在主(UI)线程中处理一个长时间运行的任务。如果主线程停止超过5秒,用户将得到一个ANR。

crash是由异常和错误(如、ClassNotFoundException、类型转换或解析错误等)造成的。ANR还会导致应用程序崩溃。

注意:永远不要在UI线程上执行长期运行的任务.

参考ANR

票数 18
EN

Stack Overflow用户

发布于 2018-01-04 14:17:08

ANR和崩溃示例:

这个问题已经有一个被接受的答案,但我增加了两个简单的例子,以更好地理解ANR和崩溃。

ANR:

代码语言:javascript
运行
复制
// this will produce an ANR on your app
int i = 0;
while(true) {
    i++;
}

崩溃:

代码语言:javascript
运行
复制
// this will crash your app : will produce java.lang.ArithmeticException
int value = 5, i = 0;
int result = value / i;
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20213482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档