Say, I have below Activity
Activity A, Activity B, Activity C and Activity D
Currently stack is having below Entry
Activity C
Activity B
Activity A
I have to launch Activity D
so that stack become like below,
Activity D
Activity A
What flag I have to set?
Consider using A
as a dispatcher. When you want to launch D
from C
and finish C
and B
in the process, do this in C
:
// Launch A (our dispatcher)
Intent intent = new Intent(this, A.class);
// Setting CLEAR_TOP ensures that all other activities on top of A will be finished
// and setting SINGLE_TOP ensures that a new instance of A will not
// be created (the existing instance will be reused and onNewIntent() will be called)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
// Add an extra telling A that it should launch D
intent.putExtra("startD", true);
startActivity(intent);
in A.onNewIntent()
do this:
@Override
protected void onNewIntent(Intent intent) {
if (intent.hasExtra("startD")) {
// Need to start D from here
startActivity(new Intent(this, D.class));
}
}