我在两种情况下都得到了ANR:
throw new NullPointerException("random null pointer");和
while(true){}只有在例外情况下,VM才会实际关闭(D/AndroidRuntime:关闭VM)。
第二个问题是:如何迫使应用程序崩溃而不是ANR,并在logcat中获得堆栈跟踪?
更新从ANR和崩溃之间的区别更改标题。
更新只发生在3-4个月前.从那以后,找出崩溃的唯一方法就是在没有任何理由的情况下到处放置尝试捕捉盒。
发布于 2015-07-20 07:23:02
我面临着同样的问题,当我调试时,我到达代码“抛出RuntimeException”,但我也有一个ANR代替。
我唯一的线索是,当我在我的应用程序中配置Google时,它就开始发生了。这是你的案子吗阿尔法?
我没有超越,因为我是这样处理它,但总有一天,我会专门调试这个问题的分析。
编辑:这个问题在Google服务8.4中解决了。我们终于可以报告不公开的例外了!该应用程序似乎被封锁了几秒钟,但最终异常被抛出并在没有ANR的情况下报告。
发布于 2015-07-02 09:26:53
崩溃:应用程序已经停止,因为它抛出了一个未经检查的异常,所以JVM停止了。
ANR:您的应用程序停止响应,这意味着UI线程被昂贵或长时间的操作阻塞。例如,在UI线程上执行while(true){}。
我不认为您有办法捕捉系统的内置机制,触发ANR对话框,这样您就可以抛出一个RuntimeException,并使您的应用程序崩溃。我不知道你为什么要这么做,最好尝试遵循这里准则,这样你就可以完全避免ANR和崩溃了。
发布于 2015-07-02 09:24:18
应用程序崩溃/强制关闭
http://www.quora.com/What-causes-Android-apps-to-force-close
如果应用程序占用过多的内存或处理能力,应用程序将被迫关闭(崩溃)。确保这种情况不会发生的最佳方法是编写非常高效的代码,不需要占用大量内存,并在各种设备(主要是旧设备,因为它们的内存和处理能力较低)上不断测试应用程序,这也是原因背后的原因。
ANR
http://developer.android.com/training/articles/perf-anr.html
https://stackoverflow.com/questions/31180423
复制相似问题