通常在调用finish()时,我们需要调用onPause(),onStop()和onDestroy()。大多数时候它工作正常。但有时finish()只调用onPause(),即onStop()和onDestroy()有时不调用。为什么会这样?不调用onStop()和onDestroy()会导致finish()发生什么。我已经将登录的finish()方法放在Activity.java中。但在工作和非工作条件下,日志是相同的。请帮忙。
答案 0 :(得分:2)
根据开发者文档,onStop()
和onDestroy()
Killable :
请注意上表中的“Killable”列 - 对于那些标记为可填充的方法,在该方法返回后,托管该活动的进程可能会在任何时候被系统杀死,而不会执行其代码的另一行。因此,您应该使用onPause()方法将任何持久性数据(例如用户编辑)写入存储。
因此可能会调用onStop()
和onDestroy()
,这取决于系统如何处理它。
答案 1 :(得分:0)
在活动上调用finish()时,执行onDestroy()方法,此方法可以执行以下操作:
另外,onDestroy()不是析构函数。它实际上并没有破坏对象。它只是一种基于某种状态调用的方法。因此,在超类的onDestroy()运行并返回之后,你的实例仍然存活并且非常好*。如果用户想要重新启动应用程序,Android会保持进程,这会使启动阶段更快。该过程将不会执行任何操作,如果需要回收内存,则该过程将被终止
finish() Call this when your activity is done and should be closed. The ActivityResult is propagated back to whoever launched you via onActivityResult().