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