为什么工具栏和屏幕底部的后退按钮调用不同的生命周期方法?

Why back buttons on toolbar and on bottom of screen are calling different lifecycle methods?

我有两个活动。当我转到第二个 activity 时,我有两个选项 return 到前一个:

  1. 按工具栏上的 "back" 按钮
  2. 按下屏幕底部的物理 "back" 按钮(主页按钮左侧)

但是,我观察到工具栏后退按钮在第一个 activity 上首先调用 onDestroy(),然后重新创建它。物理后退按钮在第一个 activity 中调用 onRestart() 而不会破坏它。

问题:为什么他们的行为不同?

工具栏后退按钮实际上是一个 "Up" 按钮,它可以将您带到应用导航层次结构的更高级别。

然而,物理按钮会将您带到您上次查看的位置。这意味着,您可以在按下 物理后退按钮 时进入完全不同的应用程序。

这两个功能都很重要,因此您需要两个行为不同的按钮。

参考this official doc以更好地理解它。