Android - 崩溃后恢复应用

时间:2015-07-14 13:22:20

标签: android

我有一个应用程序,如果它被用户关闭并再次重新启动,则会立即返回到已关闭的活动。 现在我想添加一个功能,所以当应用程序崩溃时,它会清除数据并从第一个活动重新启动应用程序。 我的想法是我有一个属性" isClosedCorrectly"一旦应用程序启动,我就将其设置为false。当应用程序正确关闭时,我将其设置为true。 当我启动我的应用程序时,我会查看此属性,并根据我的需要进行操作。 我的问题是:当isClosedCorrectly设置为TRUE时?我能处理吗?

2 个答案:

答案 0 :(得分:2)

不完全确定“正确关闭”是什么意思,但我认为你的意思是未处理的异常抛出。

我想到的是实例化UncaughtExceptionHandler

的机会
    Thread.currentThread().setUncaughtExceptionHandler(
            new Thread.UncaughtExceptionHandler() {
                @Override
                public void uncaughtException(Thread thread, Throwable ex) {

            }
    );

使用此功能,您可以在发生不良事件时通知应用程序,这会导致您的应用程序崩溃。

我在这个uncaughtException方法中写了一些“log”,一个包含“true”或“false”等简单数据的文件。

每当您打开应用程序时,您都可以阅读文件的内容并知道该怎么做。

答案 1 :(得分:1)

没有应用程序级生命周期方法可以告诉您何时应用程序已关闭"正确。其中一个最大的原因是,确实没有正确的"关闭"申请。

当用户离开您的应用程序时,当前运行的Activity将进入后台并保留在内存中。这样,如果用户决定返回您的应用程序,他们就不需要等待它再次冷启动。

如果你想沿着这条路走下去,你有几个选择:

  • 以某种对您的应用程序有意义的方式记录每个活动onStop(),并使用是否调用活动onStop()来确定是否它已经关闭"

  • 默认为" true"对于isClosedCorrectly,当您的申请开始假设所有不是“不正确”的时候。是"正确。"然后,当您的应用程序崩溃时将isClosedCorrectly设置为false。您可以使用Thread.currentThread().setUncaughtExceptionHandler()

  • 拦截崩溃