【问题标题】:Does onDestory() is ensured to be called after finish()?;是否确保在完成()之后调用 onDestory()?
【发布时间】:2013-12-20 09:57:36
【问题描述】:

我一直认为 finish() 会立即触发 onDestory()。但在 4.3 中,这似乎不是事实。 我只想知道它会在哪种情况下发生? 对不起,我不能把我所有的代码放在这里。 它让我困惑了几个小时,我找不到任何有用的信息。

【问题讨论】:

  • afaik 不能保证 onDestroy 总是会被调用,你可以试试 onStop 吗?也给你一点答案,我认为只有在系统内存不足时才会调用 onDestroy 100%/
  • 不,不是 onStop()。 onPause() 是他想要的。

标签: android ondestroy activity-finish


【解决方案1】:

From the docs:

onPause() 是在进程被杀死之前保证调用的最后一个方法——如果系统必须在紧急情况下恢复内存,那么onStop()onDestroy() 可能不会被调用。因此,您应该使用onPause() 将关键的持久数据(例如用户编辑)写入存储。

无论您使用finish() 还是系统自行终止您的活动都没有关系。如果系统“想要”恢复内存,则无法保证会调用 onDestroy()onStop()

【讨论】:

    【解决方案2】:

    首先,此答案假定您指的是 Android 的 Activity 类及其finish() 方法和onDestroy() 生命周期方法。

    其次,这取决于你对“肯定”的定义:

    您的进程可能在finish()onDestroy() 之间终止,原因与触发finish() 的调用无关

    设备制造商或 ROM 修改者可能会引入一些会破坏 finish()onDestroy() 之间的联系的扭曲更改

    电池可能会在finish()onDestroy() 之间耗尽

    等等

    【讨论】:

    • 或者用户可以接听电话,或者用户可以按下主页按钮,并且资源紧张的 Android 系统可能会简单地决定在它调用 finish() 和 onDestroy() 之间等待以免引发用户体验卡顿。
    【解决方案3】:

    不,不能保证onDestroy() 会被调用。

    onStop() 也是如此

    你想要的是onPause()

    这适用于所有版本的 Android,从 1.0 到最新版本。 Activity lifecycle 最初可能会让初学者非常困惑。但这不是初学者的错,而是框架设计者的错。

    初学者犯的另一个错误是假设onResume() 是关于恢复 Activity,而实际上它是在其 Activity 中恢复的 UI 线程。这是文档一遍又一遍地重复的另一点,但实际上,如果 android 团队一开始就将该方法称为不那么模棱两可的方法,它会简单得多。

    【讨论】:

    • 您对 onStop() 和 onDestory 的看法是正确的。但是您能告诉我一些关于 onResume 的信息吗?只恢复UI线程是什么意思?
    • 一个后果是 onResume() 也会在 Activity 开始时被调用(不仅仅是在 Activity 恢复时)。另一个后果是,有时某些方法只有在 UI 已经渲染并准备好与之交互时才需要调用,否则它们将无法按预期工作。例如,在来自 Activity 的托管对话框的情况下,Activity.showDialog() 需要在 onResume() 之后才被调用,否则当方向更改时它将无法正确调整自身大小。跨度>
    【解决方案4】:

    根据:http://developer.android.com/reference/android/app/Activity.html 总会被召唤,
    onDestroy():
    在您的活动被销毁之前收到的最后一个电话。这可能是因为 Activity 正在完成(有人在其上调用了 finish(),或者因为系统正在临时销毁该 Activity 实例以节省空间。您可以使用 isFinishing() 方法区分这两种情况。我>

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-29
    • 2012-04-17
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    相关资源
    最近更新 更多