ALopez
ALopez

Reputation: 131

Best way to handle activity state

I'm making an app that shows another activity when I correctly login however in the home screen when I pressed back and then returned to the app the login activity showed.

I was able to avoid this overriding the onBackPressed this way:

public void onBackPressed()
        moveTaskToBack(true);
    }

Is this the best way to do it? Is there a more proper way to keep the state of the application when I exit it?

Upvotes: 0

Views: 86

Answers (3)

Shahinoor Shahin
Shahinoor Shahin

Reputation: 685

As you question I understand, you want to clear the entire history stack and start a new activity. For this, in API level 11 a new Intent Flag was added which is: Intent.FLAG_ACTIVITY_CLEAR_TASK

Just to clarify, use this:

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

For API <=10 now one can use IntentCompat class for the same. One can use IntentCompat.FLAG_ACTIVITY_CLEAR_TASK flag to clear task. So you can support pre API level 11 as well.

Upvotes: 0

Maher Abuthraa
Maher Abuthraa

Reputation: 17813

Your issue is that you kept LoginActivity in stack. so when you press back it will kill MainActivity(after login) and since LoginAcitivity still there. it will be shown again. best is to kill LoginAcitivty after starting new activity.

call this in LoginActivity:

Intent intent = new Intent(context, MainActivity.class);
startActivity(intent);
finish();

Upvotes: 0

FarshidABZ
FarshidABZ

Reputation: 4123

In your login activity after starting intent call finish()

finish destroy your activity and avoid to run it again automatically.

Upvotes: 0

Related Questions