我目前正在学习 Activity 生命周期。我注意到以下几点:
- 我有两项 Activity :A 和 B。
- 当我从 Activity A 打开 Activity B 时,A 被停止,B 被创建并启动。
- 当我按下设备上的后退按钮时,B 会被销毁,而 A 会重新启动。
- 但是当我使用操作栏的后退/向上按钮时,B 被销毁,A 被销毁,然后 onCreate() 被调用。
当在 ActionBar 中使用向上按钮时,为什么 A 会被销毁而不是重新启动?
我希望我的问题很清楚,如果不清楚,请发表评论。
最佳答案
当您按下 BACK 按钮时,会调用当前 Activity
中的 onBackPressed()
。该方法的默认行为(如果未在 Activity
中重写)是在 Activity
上调用 finish()
。这将完成 Activity
并恢复其下方的 Activity
。
UP 按钮正在使用如下构建的 Intent
调用 startActivity()
:
Intent intent = new Intent(this, TargetActivityForUpButton.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
此代码将删除堆栈中的所有 Activity ,返回到(包括)TargetActivityForUpButton
。然后,它创建 TargetActivityForUpButton
的新实例并启动该 Activity
(您将看到 onCreate()
、onStart()
>, onResume()
在 Activity
上调用。
另请参阅 https://developer.android.com/training/implementing-navigation/ancestral 中的“导航到父 Activity ”部分
关于android - 设备后退按钮与操作栏后退按钮的 Activity 生命周期差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53884175/