完成()有时不工作

时间:2014-01-08 04:26:20

标签: android android-intent

通常在调用finish()时,我们需要调用onPause(),onStop()和onDestroy()。大多数时候它工作正常。但有时finish()只调用onPause(),即onStop()和onDestroy()有时不调用。为什么会这样?不调用onStop()和onDestroy()会导致finish()发生什么。我已经将登录的finish()方法放在Activity.java中。但在工作和非工作条件下,日志是相同的。请帮忙。

2 个答案:

答案 0 :(得分:2)

根据开发者文档,onStop()onDestroy() Killable

  

请注意上表中的“Killable”列 - 对于那些标记为可填充的方法,在该方法返回后,托管该活动的进程可能会在任何时候被系统杀死,而不会执行其代码的另一行。因此,您应该使用onPause()方法将任何持久性数据(例如用户编辑)写入存储。

因此可能会调用onStop()onDestroy(),这取决于系统如何处理它。

答案 1 :(得分:0)

在活动上调用finish()时,执行onDestroy()方法,此方法可以执行以下操作:

  1. 关闭活动管理的所有对话框。
  2. 关闭活动管理的所有游标。
  3. 关闭所有打开的搜索对话框
  4. 另外,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().

    finish()