【问题标题】:Activity Lifecyle Difference in Device's Back Button vs Actionbar's Back Button设备后退按钮与操作栏后退按钮的活动生命周期差异
【发布时间】:2019-05-21 21:21:40
【问题描述】:

我目前正在学习活动生命周期。我注意到以下几点:

  • 我有两个 Activity,A 和 B。
  • 当我从活动 A 打开活动 B 时,A 会停止,而 B 会创建并启动。
  • 当我按下设备上的返回按钮时,B 被破坏,而 A 被重新启动。
  • 但是当我改用操作栏的后退/向上按钮时,B 被破坏,A 被破坏,然后调用 onCreate()。

为什么在操作栏中使用向上按钮时 A 被破坏而不是重新启动?

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

【问题讨论】:

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


    【解决方案1】:

    当您按下 BACK 按钮时,这会在当前的 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。然后它会创建一个 TargetActivityForUpButton 的新实例并启动该 Actvity(您将看到 onCreate()onStart()onResume()Activity 上调用。

    另请参阅https://developer.android.com/training/implementing-navigation/ancestral 中的“导航到父活动”部分

    【讨论】:

      【解决方案2】:

      设备的后退按钮实际上是带您返回(返回上一个活动)。操作栏后退按钮的工作方式类似于“向上”按钮(在应用程序的层次结构中)。这就是为什么操作栏的后退按钮不会带您离开应用程序,而设备的后退按钮会继续带您返回,即使是在应用程序之外。操作栏存在于您的应用中,因此它遵循 Activity 的生命周期方法,并在您每次返回时从头开始,而设备将从停止的位置重新启动。

      编辑:

      后退按钮出现在系统导航栏中,用于按时间倒序浏览用户最近使用过的屏幕的历史记录。它通常基于屏幕之间的时间关系,而不是应用程序的层次结构。

      (Read more here)

      【讨论】:

        猜你喜欢
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-12
        • 1970-01-01
        • 2017-06-25
        • 1970-01-01
        • 2014-04-25
        相关资源
        最近更新 更多