Android - 在两个活动之间切换时,Activity的生命周期方法的调用顺序

时间:2013-05-23 01:13:50

标签: android android-activity android-lifecycle

我想通过调用startActivity(intent)从另一个Activity(FIRST Activity)开始一个Activity(SECOND Activity)。在我真正做到之前,我发现有人说生命周期方法按以下顺序调用:

FIRST Activity onCreate
FIRST Activity onStart
FIRST Activity onResume
FIRST Activity onPause
SECOND Activity onCreate
SECOND Activity onStart
SECOND Activity onResume
FIRST Activity onStop

SECOND Activity onResume之前总是调用FIRST Acitivity onStop吗?我想

FIRST Activity onPause
FIRST Activity onStop
SECOND Activity onCreate
SECOND Activity onStart
SECOND Activity onResume

将被调用,但似乎没有。

另外,如果我只是在两个活动之间切换,

FIRST Activity onPause
SECOND Activity onRestart
SECOND Activity onStart
SECOND Activity onResume
FIRST Activity onStop

这些方法总是按此顺序调用吗?

3 个答案:

答案 0 :(得分:38)

根据文档,应该在FIRST.onStop()之前调用SECOND.onResume() https://developer.android.com/guide/components/activities/activity-lifecycle.html#soafa协调活动部分)

答案 1 :(得分:10)

假设有两个活动FirstActivitySecondActivity

然后此顺序将始终保持不变。

//当您启动FirstActivity

  

(1)OnCreate()-> OnStart()-> FirstActivity的OnResume()将被调用

//当您使用以下方法启动SecondActivity时 startActivity(FirstActivity.this,SecondActivity.class)

  

(2) FirstActivity 的OnPause()将被调用,然后

     

(3)OnCreate()-> OnStart()-> SecondActivity 的OnResume()将被调用

     

(4) FirstActivity 的OnStop()将被调用

//当您按下 SecondActivity

上的后退按钮时
  然后将调用 SecondActivity 中的

(5)OnPause()      然后将调用 FirstActivity

(6)OnRestart()-> OnStart()-> OnResume()

      SecondActivity

(7)onStop()-> onDestroy()将被调用

 Note: 

 (1) OnPause() will be called first when you navigate to any other activity.

 (2) OnStop() will be called when activity is no longer Visible on screen.

答案 2 :(得分:-1)

首先打开活动: onCreate(),OnStart(),onResume()

用户单击backButton(): onPause(),onStop(),onDestroy()

导航到另一个屏幕:

第一个屏幕:onPause(),onStop()

第二个屏幕:onCreate(),OnStart(),onResume()

在“活动2”中按“后退”按钮:

第二个屏幕:onPause(),onStop(),onDestroy()

第一个屏幕:onRestart(),onStart(),onResume()

用户锁定设备:onPause(),onStop()

再次打开锁: onRestart(),onStart(),onResume()