Reputation: 303
When i first start an activity from my main activity, it goes through the onCreate() then onStart(). While in the app, if i turn off the screen, it goes to onPause() where i save some data. Then immediately goes to onStop(), then onDestroy(), then again, without turning on the screen to onCreate(), onStart(), onPause(). Should it go to onCreate(), onStart() right after onDestroy(), without me doing anything?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_timegame);
}
@Override
protected void onResume() {
super.onStart();
if (checkFirstTimeRun())
initializeGame();
else
resumeGame();
}
@Override
protected void onPause() {
super.onPause();
saveGameData();
}
Upvotes: 1
Views: 93
Reputation: 3525
I have observed the same behaviour on a tablet, with only landscape mode.
It turns out that when the screen goes off, it is considered portrait mode. That's why during screen lock the activity is once destroyed for the screen off itself and then it goes all the way into portrait mode and it is again destroyed.
I have read this here on SO, but I cannot recall where it was, to link against it.
Upvotes: 0
Reputation: 42824
Shorter Explanation(Considering you are not using fragments
):
OnCreate
,OnStart
,OnResume
OnPause
,OnStop
,OnDestroy
- Again
OnCreate
,OnStart
,OnResume
because activity is destroyed and recreated onOrientation changeThus, if you won't rotate OnCreate
,OnStart
,OnResume
is not fired for the second time !
Have a look at one of my answers i posted in stackoverflow - Click Here
Considering you are using fragments
):Sample Project:
I have an opensource project Download it here and execute it and see the log to understand >the sequence of events executes one after another(I have fragment also in this project exclude the >fragment logs if you don't need it)
If the path is Activity
-FragmentOne
and change the orientation for the first time then the events fired are as follows
MainActivity-onCreate
-
FragmentOne-onAttach
-
FragmentOne-onCreate
-
FragmentOne-onCreateView
-
FragmentOne-onActivityCreated
-
FragmentOne-onStart
-
FragmentOne-onResume
If the path is Activity
-FragmentOne
-orientationchange
and change the orientation for the first time then the events fired are as follows
MainActivity-onCreate
-
FragmentOne-onAttach
-
FragmentOne-onCreate
-
FragmentOne-onCreateView
-
FragmentOne-onActivityCreated
-
FragmentOne-onStart
-
FragmentOne-onResume
-
FragmentOne-onPause
-
FragmentOne-onSaveInstanceState
-
FragmentOne-onStop
-
FragmentOne-onDestroy
-
FragmentOne-onDetach
-
MainActivity-onCreate
-
FragmentOne-onAttach
-
FragmentOne-onCreate
-
FragmentOne-onCreateView
-
FragmentOne-onActivityCreated
-
FragmentOne-onStart
-
FragmentOne-onResume
Activity
-FragmentOne
-orientationchange
-orientationchange
and change the orientation for the first time then the events fired are as follows MainActivity-onCreate
-
FragmentOne-onAttach
-
FragmentOne-onCreate
-
FragmentOne-onCreateView
-
FragmentOne-onActivityCreated
-
FragmentOne-onStart
-
FragmentOne-onResume
-
FragmentOne-onPause
-
FragmentOne-onSaveInstanceState
-
FragmentOne-onStop
-
FragmentOne-onDestroy
-
FragmentOne-onDetach
-
MainActivity-onCreate
-
FragmentOne-onAttach
-
FragmentOne-onCreate
-
FragmentOne-onCreateView
-
FragmentOne-onActivityCreated
-
FragmentOne-onStart
-
FragmentOne-onResume
-
FragmentOne-onPause
-
FragmentOne-onSaveInstanceState
-
FragmentOne-onStop
-
FragmentOne-onDestroy
-
FragmentOne-onDetach
-
MainActivity-onCreate
-
FragmentOne-onAttach
-
FragmentOne-onCreate
-
FragmentOne-onCreateView
-
FragmentOne-onActivityCreated
-
FragmentOne-onStart
-
FragmentOne-onResume
Activity
-FragmentOne
-orientationchange
-orientationchange
-FragmentTwo
and change the orientation for the first time then the events fired are as follows MainActivity-onCreate
-
FragmentOne-onAttach
-
FragmentOne-onCreate
-
FragmentOne-onCreateView
-
FragmentOne-onActivityCreated
-
FragmentOne-onStart
-
FragmentOne-onResume
-
FragmentOne-onPause
-
FragmentOne-onSaveInstanceState
-
FragmentOne-onStop
-
FragmentOne-onDestroy
-
FragmentOne-onDetach
-
MainActivity-onCreate
-
FragmentOne-onAttach
-
FragmentOne-onCreate
-
FragmentOne-onCreateView
-
FragmentOne-onActivityCreated
-
FragmentOne-onStart
-
FragmentOne-onResume
-
FragmentOne-onPause
-
FragmentOne-onSaveInstanceState
-
FragmentOne-onStop
-
FragmentOne-onDestroy
-
FragmentOne-onDetach
-
MainActivity-onCreate
-
FragmentOne-onAttach
-
FragmentOne-onCreate
-
FragmentOne-onCreateView
-
FragmentOne-onActivityCreated
-
FragmentOne-onStart
-
FragmentOne-onResume
-
FragmentOne-onStop
-
FragmentOne-onAttach
-
FragmentOne-onCreate
-
FragmentOne-onCreateView
-
FragmentTwo-onActivityCreated
-
FragmentOne-onStart
-
FragmentOne-onResume
Activity
-FragmentOne
-orientationchange
-orientationchange
-FragmentTwo
-orientationchange
and change the orientation for the first time then the events fired are as follows MainActivity-onCreate
-
FragmentOne-onAttach
-
FragmentOne-onCreate
-
FragmentOne-onCreateView
-
FragmentOne-onActivityCreated
-
FragmentOne-onStart
-
FragmentOne-onResume
-
FragmentOne-onPause
-
FragmentOne-onSaveInstanceState
-
FragmentOne-onStop
-
FragmentOne-onDestroy
-
FragmentOne-onDetach
-
MainActivity-onCreate
-
FragmentOne-onAttach
-
FragmentOne-onCreate
-
FragmentOne-onCreateView
-
FragmentOne-onActivityCreated
-
FragmentOne-onStart
-
FragmentOne-onResume
-
FragmentOne-onPause
-
FragmentOne-onSaveInstanceState
-
FragmentOne-onStop
-
FragmentOne-onDestroy
-
FragmentOne-onDetach
-
MainActivity-onCreate
-
FragmentOne-onAttach
-
FragmentOne-onCreate
-
FragmentOne-onCreateView
-
FragmentOne-onActivityCreated
-
FragmentOne-onStart
-
FragmentOne-onResume
-
FragmentOne-onStop
-
FragmentOne-onAttach
-
FragmentOne-onCreate
-
FragmentOne-onCreateView
-
FragmentTwo-onActivityCreated
-
FragmentOne-onStart
-
FragmentOne-onResume
-
FragmentOne-onPause
-
FragmentOne-onSaveInstanceState
-
FragmentOne-onSaveInstanceState
-
FragmentOne-onStop
-
FragmentOne-onDestroy
-
FragmentOne-onDetach
-
FragmentOne-onDestroy
-
FragmentOne-onDetach
-
MainActivity-onCreate
-
FragmentOne-onAttach
-
FragmentOne-onCreate
-
FragmentOne-onAttach
-
FragmentOne-onCreate
-
FragmentOne-onCreateView
-
FragmentTwo-onActivityCreated
-
FragmentOne-onStart
-
FragmentOne-onResume
Upvotes: 4