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

时间:2018-12-21 11:38:39

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

我目前正在学习活动周期。我注意到以下内容:

  • 我有两个活动A和B。
  • 当我从活动A中打开活动B时,A停止,而B被创建并开始。
  • 当我按设备上的“后退”按钮时,B被破坏,而A重新启动。
  • 但是当我改用Actionbar的Back / Up Botton时,B被破坏,A被破坏,然后调用onCreate()。

在ActionBar中使用向上弹键时,为什么销毁A而不是重新启动?

我希望我的问题很清楚,否则请发表评论。

2 个答案:

答案 0 :(得分:1)

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

编辑:

  

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

Read more here

答案 1 :(得分:1)

当您按下BACK按钮时,这会在当前onBackPressed()中调用Activity。该方法的默认行为(如果未在Activity中覆盖)是在finish()上调用Activity。这样就完成了Activity,并恢复了其下面的Activity

“向上”按钮正在使用startActivity()来调用Intent,该Intent intent = new Intent(this, TargetActivityForUpButton.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 的构建如下:

TargetActivityForUpButton

此代码将把堆栈中的所有活动移回TargetActivityForUpButton,包括Actvity。然后,它创建一个onCreate()的新实例并启动该onStart()(您会看到onResume()上调用了Activity<h2> <a href="exmpale">repeatedtext</a> </h2> <p> </p> <p> required things </p> <--- select this element FirebaseDatabase.getInstance().setPersistenceEnabled(true);

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

中的“导航至父级活动”部分