2012-06-24 37 views
2

我增加了一个的ExceptionHandler未处理异常,要知道,应用程序崩溃的下一个应用程序启动:的android:如何正确地退出程序上的错误

@Override 
public void uncaughtException(Thread thread, Throwable ex) { 
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 
    SharedPreferences.Editor editor = preferences.edit(); 
    editor.putString("crashed", "yes"); 
    editor.commit(); 
} 

我加入经处理:

Thread.setDefaultUncaughtExceptionHandler(this); 

现在是一点:因为我添加了处理程序,该应用程序行为不同的错误:

  • 之前我添加了处理程序我有一个弹出窗口告诉我,该应用程序崩溃。

  • 现在,添加处理程序后,应用程序只是冻结,过了一会儿,android向我显示一个弹出窗口,告诉我该应用程序不再响应,并且是否要再等待。这不是好的国际海事组织。任何提示,如何在应用程序崩溃后正确退出?

+0

从一个活动退出,你只需要调用'finish()'。 –

+0

@Styx如果我叫完成()在我的错误处理程序,根本没有弹出显示出来。这不是我想要的。 – stoefln

回答

0

我建议您将您的逻辑与ACRA相集成,以便它能够处理崩溃报告和清理问题。

+0

我已经使用Crittercism,它做了伟大的工作,但Crittercism.didCrashOnLastAppLoad()方法似乎是越野车...... – stoefln

4

可以保存原来的异常处理程序,这样就可以把它叫做你与未处理的异常做自己的自定义操作完成之后。这样的事情:

//Inside UncaughtExceptionHandler.java: 
… 
private UncaughtExceptionHandler defaultUEH; 

public DefaultExceptionHandler() 
    { 
    this.defaultUEH = Thread.getDefaultUncaughtExceptionHandler(); 
    } 

@Override 
public void uncaughtException(Thread t, Throwable e) 
    { 
    //do anything you wish about the Throwable e :getStackTrace(),getCause(),getClass()... 
    //call the original uncaught exception handler: 
    defaultUEH.uncaughtException(t, e); 
    } 
+0

,改变默认的行为为好,不知道为什么,虽然... – stoefln

+0

做什么你意思是? –