我可以拦截应用程序崩溃并立即执行某些操作吗?

时间:2014-03-14 11:36:27

标签: android

我希望能够拦截我的应用程序中的应用程序崩溃,当发生一次时,我想清除数据库。例如。

我可以为崩溃找到一些监听器,并且有一个类似的方法:

onAppCrash() {
    // Do some really important stuff
}

2 个答案:

答案 0 :(得分:6)

您可以使用Thread.setDefaultUncaughtExceptionHandler来捕获所有未处理的异常,这通常是崩溃的原因。 您可以在应用程序onCreate或任何特定活动中注册此监听器 - 取决于您将如何解决异常。

尽管如此,我建议你多考虑一下这种方法。提高app的质量总是更好,而不是"捕捉"所有可能的Exception s。

答案 1 :(得分:3)

全局捕获异常的问题在于确定下一步该做什么。由于异常可能是在应用程序代码中(或在底层框架中)的任何时间引起的,因此几乎不可能确定应用程序的状态。

通常最好将定制的异常处理程序放在可能失败的所有代码部分周围。通过这样做,您可以了解每个故障的背景,并可以做出反应。

例如,您提到关闭数据库。如果您在数据库调用周围放置定制的处理程序,您可能会更容易知道如何解决这种情况。您可以随时在数据库代码中添加“finally”块,以确保数据库始终关闭,即使存在异常。