【问题标题】:Activity is getting destroyed while pressing the home button按下主页按钮时活动被破坏
【发布时间】:2019-11-20 20:36:06
【问题描述】:

在我的应用程序中,当我按下主页按钮时,活动将转到 onDestroy()。它应该只被称为onPause() 方法吗?

为什么会这样?

【问题讨论】:

  • 你能添加一些代码吗?如果您明确命令 onPause(甚至 onDestroy),那么您的问题很可能来自该区域。使用搜索功能。
  • 看看这些答案:stackoverflow.com/a/14195833/779408 stackoverflow.com/a/14196279/779408 也许你也有同样的问题。转到设置-> 开发人员选项未选中 Don't keep activitiesBackground process limit 设置为标准限制。如果选中Don't keep activities,则不会保留活动的状态,因此当您离开活动时,它会被销毁。享受吧!
  • nohistory 属性是否适用于您的活动?如果是这样,那么将调用活动完成
  • android:noHistory 默认为 false
  • @breceivemail 你救了我的命!

标签: android android-activity ondestroy


【解决方案1】:

还要检查您没有在 Activity 清单中使用 android:noHistory 标志

文档: 机器人:无历史 当用户离开它并且它不再在屏幕上可见时,是否应该从 Activity 堆栈中删除并完成(调用它的 finish() 方法)

【讨论】:

  • 你是绝对正确的,但只是一个简单的问题:我认为noHistory="true" 不会调用finish()。我检查了在onPauseonStop 中打印isFinishing,但它们都显示falsefinish() 没有被调用吗?
【解决方案2】:

这取决于你的手机有多少内存,如果你的手机没有太多的内存,那么它会立即破坏活动以释放资源。在新手机上,这不会发生,因为它们有足够的备用内存。

【讨论】:

    【解决方案3】:

    如果系统受到限制并确定它需要释放一些资源,则您的活动可能会在按下主页按钮时被破坏。 documentation 声明 onDestroy() 可以在以下情况下调用:

    这可能是因为 Activity 正在完成(有人在其上调用了 finish(),或者因为系统正在临时销毁该 Activity 实例以节省空间。您可以使用 isFinishing() 方法区分这两种情况.

    另外,请注意,在调用onStop() 之后,系统可以kill 您的程序而无需调用onDestroy()。因此,任何清理/数据持久化代码都应该在onPause()onStop() 中。

    【讨论】:

      【解决方案4】:

      嗯,这取决于很多因素。如果您在 Android 3.2+ 设备上遇到此问题,则应将 screenSize 属性添加到 android:configChanges

          android:configChanges="keyboardHidden|orientation|screenSize"
      

      此外,还将 android:launchMode="singleTop" 添加到您的启动器活动中。请注意,您需要使用 Android SDK 15 或更高版本作为目标,但是,您的应用也可以在旧设备上运行。希望这会有所帮助。

      【讨论】:

        【解决方案5】:

        要检查的另一件事是您的活动是否在onPause() 时调用finish()

        【讨论】:

          【解决方案6】:

          当然可能是内存问题,但在此之前检查清单文件,在活动的声明中,如果你声明了“没有历史记录”(你不希望活动保留在活动堆栈中。另外你当您创建带有意图的活动时,可能会使用一些标志。 那么,最可能的答案就是 Alex Contour 给出的答案。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-12-30
            • 1970-01-01
            • 1970-01-01
            • 2014-04-25
            • 1970-01-01
            • 2011-09-17
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多