如果我的应用程序崩溃了,它会挂起几秒钟,然后Android告诉我该应用程序崩溃了,需要关闭。所以我当时想用通用的方式捕获应用程序中的所有异常:
try { // ... } catch(Exception e) { // ... }
并做一个新的Activity解释,说明应用程序立即崩溃(并且还使用户有机会发送包含错误详细信息的邮件),而不是由于Android而造成了延迟。是否有更好的方法来实现这一目标?
Activity
更新: 我使用的是启用了ART的Nexus 5,但我没有注意到我以前遇到的崩溃(我最初所说的“挂起”)是延迟的。我认为既然所有内容都是本机代码,那么崩溃会立即发生,并且会获取所有崩溃信息。也许Nexus 5很快就可以了:)不管怎么说,这可能不会在将来的Android版本中引起担心(假设ART将成为Android L中的默认运行时)。
在这里,检查链接以供参考。
在这里,您创建一个类 ExceptionHandler that implements java.lang.Thread.UncaughtExceptionHandler..
implements java.lang.Thread.UncaughtExceptionHandler
在本课程中,您将进行一些节省生命的工作,例如创建stacktrace和准备上载错误报告等。
现在是重要的部分, 即如何捕获该异常。虽然很简单。在您的重写onCreate方法中调用super方法之后,在每个Activity中复制以下代码行。
onCreate
Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this));
您的活动可能看起来像这样……
public class ForceClose extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this)); setContentView(R.layout.main); } }
希望这可以帮助…