我在 details 活动中,我想返回 home 活动,按 back 按钮和在 details 活动上调用完成方法有什么区别?
4 回答
如果您的 then 还没有 OverrideonBackPressed()
方法Activity
,它将finish()
为您的Activity
. 你不需要finish()
显式调用..
因此,它将显示Activity
位于Activity Stack
. 然后你会empty Stack
很从应用程序。
如果您有 OverrideonBackPressed()
方法,那么您必须finish()
显式调用以销毁活动。
您可以finish()
从您的代码中调用;你不能从代码中按下后退按钮。通常,按下后退按钮会调用finish()
. 区别在于您是希望您的代码还是用户启动操作。
当我得到完成和后退按钮时,会破坏活动。我发现的唯一区别是,当您按下返回按钮时,它会被调用。onBackPress 事件
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 会保留进程以防用户想要重新启动应用程序,这使得启动阶段更快。该进程将不会做任何事情,如果需要回收内存,该进程将被杀死