我试图准确研究何时为一项活动调用onDestroy方法,但我已经阅读了一些令人困惑和冲突的信息。 一般来说,我的问题是:在什么情况下onDestroy方法实际上调用了一个活动? 更具体地说,如果我有两个活动,即活动A和活动B,如果活动A正在运行并且我创建了一个意图并切换到活动B,那么活动A是仅停止还是被销毁?

#1楼 票数:7 已采纳

如官方文档中所述

onDestroy()

在您的活动被销毁之前收到的最后一个电话。 这可能是因为活动正在完成(有人称为finish(),或者因为系统暂时销毁此活动实例以节省空间。您可以使用isFinishing()方法区分这两种情况。

在您的示例中,活动A已停止,可能会被系统销毁


请注意上面的documentation链接:

...不要指望[ onDestroy() ]被称为保存数据的地方...... [请参阅] onPause()onSaveInstanceState(Bundle)

#2楼 票数:-5

无论何时调用onDestroy()

  • 用户从“最近的应用”屏幕中取出活动。
  • 用户从“最近的应用”屏幕中取出活动。

无论何时调用onStop()

  • 用户离开当前活动。

因此,在您的示例中,当用户启动活动B时,活动A调用onStop()

编辑 :根据文档,并不总是调用onDestroy()方法。 onStop()总是从Honeycomb开始调用,因此在活动停止之前移动您明确需要执行的代码。

从Honeycomb开始,应用程序在其onStop()返回之前不处于killable状态。 https://developer.android.com/reference/android/app/Activity#ActivityLifecycle

希望这有助于:D

  ask by Thomas translate from so

未解决问题?本站智能推荐:

3回复

onStop() 没有被调用?

我正在尝试获取活动生命周期的日志。 我在这里面临一些奇怪的问题。 当我使用活动的主题作为android:theme="@style/Theme.AppCompat.Light.NoActionBar并转到下一个onPuase()和onStop()被调用。 但是,当我使用android:theme
2回复

当onStop实际被调用时

在我简单的android应用中,我有2个activities 。 在第一个activity (主要活动)中,我重写了ON STOP方法。 但是当我去做时,调用main_Activity stop方法上的第二个activity 。 为什么会这样? 根据我的理解,我应该调用Pause而不是S
3回复

在onStop()中调用finish()

在onStop()方法中调用finish()方法时会发生什么? 它会导致anr :意味着它调用 的onPause() - >的onStop() - >结束() - >的onPause().... 或完成活动 :表示直接调用 的onDestroy
2回复

为什么不保证调用onDestroy()?

根据android Activity Lifecycle,保证被调用的唯一回调(如果一个活动离开Running状态,这通常是预期的)是onPause() 。 因此,我必须假设有些情况下实现onStop()和onDestroy()是有意义的,尽管它们并不能保证被调用。 我知道当一个活动
6回复

Android - onStop() 将延迟调用

我发现我的活动onStop()方法将在不到 10 秒的延迟内被调用。 我以前从未见过这种行为。 注意:-活动是singleTop并且它以Intent.FLAG_ACTIVITY_REORDER_TO_FRONT标志开始。 注意:-我使用的是 Build Tools v23.0.2。 延
1回复

在onStop()之后,线程的Android活动被破坏

所以我有一个游戏活动,它有两个额外的线程用于更新和渲染。 当我按下主页(或以任何其他方式隐藏活动)并返回时,屏幕会冻结一段时间,并且活动会像最后一个意图一样重新启动。 当我长按回家(进入正在运行的应用列表)时,这种情况经常发生。 我假设问题出在这里的线程处理。 另外LogCat: 0
7回复

启动活动后立即调用OnPause和OnStop()

我有一项活动需要在启动时打开屏幕(如果是关闭)。 所以在onCreate中,我有: 在广播接收器的wakelock的帮助下使用它,我能够在广播接收器启动时显示我的活动。 但问题很奇怪,活动生命周期以这种方式调用,onPause()和onResume在启动活动后立即调用
3回复

在onDestroy中进行所有清理是否安全?

更具体地说:在onDestroy中取消任务是否安全? 另外,使用onDestroy来取消注册接收器和释放资源是否安全? 我的目的是确保在活动被销毁时取消/销毁我的任务,但不是之前。 的onDestroy(): 在活动被销毁并且必须释放资源时调用。 当活动被匆忙销毁