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

标签 android android-activity back-button activity-lifecycle up-button

我目前正在学习 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/

相关文章:

android - 如何在android中的单个 Activity 中为不同的 fragment 使用不同的工具栏?

android - 使用 IF 语句查看启动 Activity 的 Intent - ANDROID

android - 如何防止Android应用程序中的 Activity 被破坏?

android - 相机预览未重新初始化 => 一个好的 Android 相机实现?

javascript - 在 Safari、iOS 上使用 History API 后警告、确认和提示不起作用

android - 如何在华为应用程序库上发布应用程序进行测试

android - 在 Unity3D 和 ItextSharp 中使用自定义字体

javascript - 如何从外部网页导航回使用 pushState 创建的伪 url?

javascript - 单击浏览器的后退按钮后,Opera 浏览器不会在页面上触发 JS 或服务器端代码 (JSP)

Android,处理来电事件