Activity 设备后退按钮与操作栏后退按钮的生命周期差异

Activity Lifecyle Difference in Device's Back Button vs Actionbar's Back Button

我目前正在学习 Activity 生命周期。我注意到以下内容:

为什么在 ActionBar 中使用向上按钮时 A 被销毁而不是重新启动?

希望我的问题很清楚,如果不清楚请发表评论。

设备的后退按钮实际上会将您带回(回到之前的activity)。操作栏后退按钮的工作方式类似于 "Up" 按钮(在应用的层次结构中)。这就是为什么操作栏的后退按钮不会将您带到应用程序之外,而设备的后退按钮将继续带您返回,甚至是在应用程序之外。操作栏存在于您的应用程序中,因此它遵循 activity 的生命周期方法并在您每次返回时从头开始,而设备从停止的地方重新启动。

编辑:

The Back button appears in the system navigation bar and is used to navigate, in reverse chronological order, through the history of screens the user has recently worked with. It is generally based on the temporal relationships between screens, rather than the app's hierarchy.

(Read more here)

当你按下返回按钮时,这会调用当前Activity中的onBackPressed()。该方法的默认行为(如果未在 Activity 中被覆盖)是在 Activity 上调用 finish()。这将完成 Activity 并恢复其下方的 Activity

UP 按钮正在调用 startActivity(),其中 Intent 是这样构建的:

Intent intent = new Intent(this, TargetActivityForUpButton.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

此代码将移除堆栈中的所有活动,包括 TargetActivityForUpButton。然后它会创建 TargetActivityForUpButton 的新实例并启动 Actvity(您将看到 onCreate()onStart()onResume()Activity 上调用。

另请参阅 https://developer.android.com/training/implementing-navigation/ancestral

中的 "Navigate up to parent activity" 部分