38

我想通过调用从另一个活动(第一个活动)启动一个活动(第二个活动)startActivity(intent)。在我真正做之前,我发现人们说生命周期方法是按以下顺序调用的:

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

方法是否总是按此顺序调用?

4

3 回答 3

44

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

于 2013-05-23T01:25:56.527 回答
40

假设有两个活动FirstActivitySecondActivity

那么这个顺序每次都会保持不变。

// 当你启动 FirstActivity

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

当您使用 startActivity(new Intent(FirstActivity.this, SecondActivity.class))启动 SecondActivity

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

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

(4) FirstActivity的OnStop() 被调用

// 当你按下SecondActivity上的返回按钮时

(5) 然后将调用SecondActivity的 OnPause()

(6) 然后调用FirstActivity的OnRestart () -> OnStart() -> OnResume()

(7)将调用SecondActivity的 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.
于 2018-09-12T13:43:54.837 回答
-2

首先打开Activity: onCreate(),OnStart(),onResume()

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

导航到另一个屏幕:

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

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

在 Activity2 中按下后退按钮:

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

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

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

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

于 2018-09-04T12:27:17.047 回答