11

我在 details 活动中,我想返回 home 活动,按 back 按钮和在 details 活动上调用完成方法有什么区别?

4

4 回答 4

13

如果您的 then 还没有 OverrideonBackPressed()方法Activity,它将finish()为您的Activity. 你不需要finish()显式调用..

因此,它将显示Activity位于Activity Stack. 然后你会empty Stack很从应用程序。

如果您有 OverrideonBackPressed()方法,那么您必须finish()显式调用以销毁活动。

于 2013-01-31T18:39:01.107 回答
3

您可以finish()从您的代码中调用;你不能从代码中按下后退按钮。通常,按下后退按钮会调用finish(). 区别在于您是希望您的代码还是用户启动操作。

于 2013-01-31T18:29:51.210 回答
2

当我得到完成和后退按钮时,会破坏活动。我发现的唯一区别是,当您按下返回按钮时,它会被调用。onBackPress 事件

于 2013-01-31T18:33:42.573 回答
1

onBackPressed:

如果您在活动中定义 onBackPressed() 方法,则意味着您将覆盖 backButton 的默认行为,因为当您按下后退按钮时会调用 onBackPressed() 方法。

如果您还没有从您的 Activity 中覆盖 onBackPressed() 方法,那么它将为您的 Activity 调用 finish()。您不需要显式调用finish()。它将显示位于 Activity Stack 顶部的 Activity,并且有空的 Stack,然后您将完全脱离应用程序。如果您有 Override onBackPressed() 方法,那么您必须显式调用 finish() 来销毁活动。

结束:

如果你实现了 finish() 方法,它打算关闭当前的 Activity。如果您的应用程序没有 top backstack 将重定向到 android 主屏幕。在活动上调用 finish() 时,会执行 onDestroy() 方法。此方法可以执行以下操作:

  • 关闭活动正在管理的任何对话框。
  • 关闭活动正在管理的所有游标。
  • 关闭任何打开的搜索对话框

此外, onDestroy() 不是析构函数。它实际上并没有破坏对象。它只是一种基于某种状态调用的方法。因此,在超类的 onDestroy() 运行并返回之后,您的实例仍然存在并且非常好*。Android 会保留进程以防用户想要重新启动应用程序,这使得启动阶段更快。该进程将不会做任何事情,如果需要回收内存,该进程将被杀死

于 2019-05-29T02:32:12.347 回答