保证替代onDestroy()?

时间:2014-05-27 19:26:04

标签: android lifecycle android-lifecycle onpause ondestroy

我试图在我的活动被杀死时执行一些代码,但是当它被简单地移动到后台时(所以只需在onPause()中调用它就是&# 39; ta解决方案),我理解onDestory()不保证被调用。我一直在寻找并且没有找到办法做到这一点。我怎样才能解决这个问题?有可能吗?

2 个答案:

答案 0 :(得分:9)

无。当应用程序结束时,您永远不会被保证被调用,因为它可能总是被异常终止 - 它可能会崩溃,电池可能被拔出等等.onDestroy是您可以来的最接近的。但是你永远不应该编写一个需要在终止时进行清理的程序。

答案 1 :(得分:1)

我不确定,但我怀疑你有一些问题已经与一个大问题混在一起;

当我读到这个问题时,您有2或3个问题:

1)你想要在应用退出时发生一些事情。

2)你有想要在onPause()期间维护的状态,但不是在onDestroy()

之后 3)你可能有一些内容在应用程序使用之间不应该存在。

一些答案​​:

1)正如加布指出的那样 - 无法保证任何东西都会被召唤。我可以从设备上弹回来并取出电池。你的电话不会发生。

2)您可以尝试使用onDestroyView()来处理这种情况。它在许多情况下都会被调用,其中onPause将会出现(例如,当显示警告对话框时),但在其他情况下会被调用(例如,当你用另一个片段替换片段时)。

3)此问题让我觉得您可能想重新考虑存储/保存此信息的方法。如果您不在使用应用程序时不希望它存在于系统中,最好永远不要将数据写入文件系统。 (由于1)。其他选择是将其保留在内存中。您也可以使用共享首选项/首选项机制,但在您的应用程序被删除之前,这仍然存在于文件系统中。