我希望能够拦截我的应用程序中的应用程序崩溃,当发生一次时,我想清除数据库。例如。
我可以为崩溃找到一些监听器,并且有一个类似的方法:
onAppCrash() {
// Do some really important stuff
}
答案 0 :(得分:6)
您可以使用Thread.setDefaultUncaughtExceptionHandler
来捕获所有未处理的异常,这通常是崩溃的原因。
您可以在应用程序onCreate
或任何特定活动中注册此监听器 - 取决于您将如何解决异常。
尽管如此,我建议你多考虑一下这种方法。提高app的质量总是更好,而不是"捕捉"所有可能的Exception
s。
答案 1 :(得分:3)
全局捕获异常的问题在于确定下一步该做什么。由于异常可能是在应用程序代码中(或在底层框架中)的任何时间引起的,因此几乎不可能确定应用程序的状态。
通常最好将定制的异常处理程序放在可能失败的所有代码部分周围。通过这样做,您可以了解每个故障的背景,并可以做出反应。
例如,您提到关闭数据库。如果您在数据库调用周围放置定制的处理程序,您可能会更容易知道如何解决这种情况。您可以随时在数据库代码中添加“finally”块,以确保数据库始终关闭,即使存在异常。