Search code examples
androidandroid-activitylifecycle

Using of onRestoreInstanceState


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.


Solution

  • It's not a duplicate...

    Ok.

    Earlier I was in need to destroy some other activity by any way when the app is minimized. So I used android:noHistory.

    And of course I have created "Login" activity with copy-paste and forgot to delete noHistory.