【问题标题】:Activity's onDestroy is called instead of onResume when bringing the app to foreground from recent list将应用程序从最近列表移至前台时,调用 Activity 的 onDestroy 而不是 onResume
【发布时间】:2014-05-07 07:09:15
【问题描述】:

我有一个单点活动。 当我将它推到后台时 onPause() 被调用。 当我从最近的应用程序中恢复应用程序时,会调用 Resume。 一切正常。 但在 API 级别 10 设备中,(2.3.6) 当我从最近的列表中将活动带到前台时 onDestroy() 被调用。 onResume(),finish() 没有调用任何内容。 onDestroy() 被直接调用。

在什么情况下会发生这种情况? 我以为设备内存不足,但事实并非如此。

【问题讨论】:

  • 听起来您的应用程序正在崩溃。您在 logcat 中看到任何错误吗?也许您正在使用 API 级别 10 不支持的 Android API?
  • 它适用于 API 10 以上的所有设备
  • 不,应用程序没有崩溃,之前的活动是 singleInstance 被调用。
  • 我没有使用 10 级不支持的任何 API。此外,如果我将启动模式更改为标准或单实例,则不会复制此 bg。但我无法改变它。

标签: android android-activity android-2.3-gingerbread


【解决方案1】:

它可能发生在任何设备上,因为它与 Activity 生命周期不矛盾。因此,您不能做任何事情来专门解决这个问题。相反,我会在onCreate 中正确初始化所有内容,然后启动/停止任何需要的onResume/onPause

【讨论】:

  • 谢谢!但是保存数据不是问题。它是一个文件阅读器活动,当你从后台拉回来时,你会希望你的活动保持它的状态。
  • 您可以使用 Activity 的 onSaveInstanceState 将所有重要数据放入包中。然后在 onCreate 中,您从 savedState 包中取回数据。在 onSaveInstanceState 中最后调用 super.onSaveInstanceState(),所以 bundle 去它应该去的地方。
  • 我再说一次,保存数据不是问题。我希望我的活动能够恢复。该活动实际上是一个文件阅读器活动。当我将它推到后台并从最近的应用程序中拉回应用程序时,我希望文件是打开的,而不是要销毁的活动。之后,当前显示主要活动,就像它在堆栈中的此活动之前一样。
  • 让你的活动在 onCreate 中重新打开文件,如果它从保存状态决定在活动被销毁之前打开了这样的文件。您也可以将当前位置保存在文件中。
  • Thnx!是的,我可以做到,重新开始我的活动。但是我不明白为什么我的活动被破坏了。并且仅在 API 级别 10 手机上,并且仅在单顶活动的情况下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多