Naetmul
Naetmul

Reputation: 15552

Android - While switching between two activities, the calling order of lifecycle methods of Activity

I want to start an Activity (SECOND Activity) from another Activity (FIRST Activity) by calling startActivity(intent). Before I actually do it, I found people say that the lifecycle methods are called in the following order:

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

Is the SECOND Activity onResume always called before FIRST Acitivity onStop? I thought

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

will be called, but it seems not.

Also, if I just switch between two activities,

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

Are the methods always called in this order?

Upvotes: 40

Views: 41795

Answers (3)

Y2i
Y2i

Reputation: 3868

According to the documentation, SECOND.onResume() is supposed to be called before FIRST.onStop() https://developer.android.com/guide/components/activities/activity-lifecycle#coordinating-activities (Coordinating activities section)

Upvotes: 45

Samir Mangroliya
Samir Mangroliya

Reputation: 40416

Suppose There are two activities FirstActivity and SecondActivity.

Then this order will always remain same everytime.

// when you start FirstActivity

(1) OnCreate() -> OnStart() -> OnResume() of FirstActivity will be called

when you start SecondActivity using startActivity(new Intent(FirstActivity.this, SecondActivity.class))

(2) OnPause() of FirstActivity will be called and then

(3) OnCreate() -> OnStart() -> OnResume() of SecondActivity will be Called then

(4) OnStop() of FirstActivity will be called

// when you press back button on SecondActivity

(5) OnPause() of SecondActivity will be called then

(6) OnRestart() -> OnStart() -> OnResume() of FirstActivity will be called then

(7) onStop() -> onDestroy() of SecondActivity will be called

 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.

Upvotes: 62

Phani varma
Phani varma

Reputation: 475

First opens Activity: onCreate(),OnStart(),onResume()

User Clicks backButton(): onPause(),onStop(),onDestroy()

Navigating to another screen:

First Screen:: onPause(),onStop()

Second Screen: onCreate(),OnStart(),onResume()

Presses Backbutton in Activity2:

Second Screen: onPause(),onStop() ,onDestroy()

First Screen: onRestart(), onStart(), onResume()

User locks the device: onPause(),onStop()

Again Opens lock: onRestart(), onStart(), onResume()

Upvotes: -2

Related Questions