【发布时间】:2019-06-25 16:10:32
【问题描述】:
我在 details 活动中,我想返回 home 活动,按 back 按钮和在 details 活动上调用完成方法有什么区别?
【问题讨论】:
-
我认为没有区别,两者都有相同的效果,但取决于您在 AndroidManifest.xml 中的 Activity 配置,以防您设置了 android:launchMode="singleInstance"
标签: android
我在 details 活动中,我想返回 home 活动,按 back 按钮和在 details 活动上调用完成方法有什么区别?
【问题讨论】:
标签: android
如果您还没有从您的Activity 覆盖onBackPressed() 方法,那么它将为您的Activity 调用finish()。你不需要显式调用finish()..
因此它将显示Activity,它位于Activity Stack 的顶部。还有empty Stack,那么你就可以从应用程序中获得了。
如果您有 Override onBackPressed() 方法,那么您必须显式调用 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 会保留进程以防万一 用户想要重新启动应用程序,这使得启动阶段更快。该过程不会做任何事情,如果需要回收内存, 该进程将被杀死
【讨论】: