【问题标题】:Why does "Home" button call `onDestroy()` in my Android app?为什么“主页”按钮在我的 Android 应用程序中调用 `onDestroy()`?
【发布时间】:2021-02-05 05:56:31
【问题描述】:

Android dev page 上,它说按下“主页”或“概览”按钮不会调用onDestroy

但在我的应用程序中,它一直在调用onDestroy。有什么线索吗?

(具体情况如下)

我已经构建了一个简单的应用程序,可以从主要活动切换到第二个活动,

但如果我在第二个活动上按下“主页”或“概览”按钮,onDestroy 会被调用。

所以当我再次返回我的应用时,它会显示主要活动,而不是第二个活动。

这正常吗?

如果我想在按下 Home 或 Overview 按钮并返回我的应用程序后返回到上一个活动(不是主要活动),我应该保存状态吗?

Android dev page 我读到的:

如果前台出现新的活动或对话框,获得焦点并完全覆盖正在进行的活动,则被覆盖的活动失去焦点并进入停止状态。然后系统快速连续调用 onPause() 和 onStop()。

注意:当用户点击概览或主页按钮时,系统的行为就像当前活动已被完全覆盖。

所以它应该只调用onPauseonStop不是 onDestroy,不是吗?

【问题讨论】:

  • 在设备的开发者选项中,你是否开启了激进的活动背景销毁选项
  • @ConradB 我检查过,但我没有。感谢您的评论!几个小时前有人问过这个问题,但没有人回答,所以我自己发布了答案:)

标签: android android-lifecycle


【解决方案1】:

您必须将代码放入您的问题中,否则我们无法帮助您。

也许你在调用startActivity(MainActivity.this, SecondActivity.class) 之后在MainActivity 中调用finish()

使用编辑功能并向我们展示您的代码,然后我们可以为您提供更多帮助。

【讨论】:

  • 哦,有 6 个小时没有答案,所以我正在写我自己的答案,而你正在输入这个 :) 非常感谢!我试图搜索是否调用了完成,但没有调用。终于找到问题了,是AndroidManifest文件!
  • @starriet 我不知道 android:noHistory="true" 会做这样的事情。我以为我可以帮助你,但现在你教了我。 :D
【解决方案2】:

我终于找到了罪魁祸首!

问题是我在 AndroidManifest.xml 文件中的第二个活动上设置了android:noHistory="true"

使这个选项true让活动不离开历史, 因此,如果另一个 Activity 出现在前台并且用户按下后退按钮,则前一个 Activity(noHistory=true) 不会显示出来。

同样,如果用户按下 Home 或 Overview 按钮,然后用户尝试返回到我们的应用程序,最后一个 Activity(noHistory=true) 也不会显示。 p>

【讨论】:

  • 太好了,我只是一个测试人员,所以我的建议仅来自我有限的经验;只是为了让您坚持并希望了解您的解决方案。感谢您发布答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多