I have an activity and when I am pressing home button I have the next activity lifecycle:
D/States: Login: onPause()
D/States: Login: onStop()
D/States: onSaveInstanceState
D/States: Login: onDestroy()
When I again entering my application, I have:
D/States: Login: onStart()
D/States: Login: onResume()
D/States: Login: onPause()
D/States: Login: onResume()
But onRestoreInstanceState()
method is not called and activity state is not saved.
Overrides:
@Override
protected void onStart() {
super.onStart();
Log.d(TAG, "Login: onStart()");
}
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "Login: onResume()");
}
@Override
protected void onPause() {
super.onPause();
Log.d(TAG, "Login: onPause()");
}
@Override
protected void onStop() {
super.onStop();
Log.d(TAG, "Login: onStop()");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG, "Login: onDestroy()");
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("login", mEmailView.getText().toString());
outState.putString("password", mPasswordView.getText().toString());
Log.d(TAG, "onSaveInstanceState");
// super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
mEmailView.setText(savedInstanceState.getString("login"));
mPasswordView.setText(savedInstanceState.getString("password"));
Log.d(TAG, "onRestoreInstanceState");
}
As I know, onRestoreInstanceState()
method should be called in onResume()
or onStart()
.
I read about configChanges
somewhere in Google while searching answer on my question. I have not android:configChanges="keyboardHidden|orientation"
or some else android:configChanges
in my manifest.
But why it is not called in my activity? Solved.