Say you have activity stack like A>B>C>D>E. You are at activity D, and you want to close your app. This is what you wil do -
In Activity from where you want to close (Activity D)-
Intent intent = new Intent(D.this,A.class);
intent.putExtra("exit", "exit");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP| Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
In your RootActivity (ie your base activity, here Activity A) -
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if (intent.hasExtra("exit")) {
setIntent(intent);
}
}
@Override
protected void onResume() {
super.onResume();
if (getIntent() != null) {
if (("exit").equalsIgnoreCase(getIntent().getStringExtra(("exit")))) {
onBackPressed();
}
}
}
onNewIntent is used because if activity is alive, it will get the first intent that started it. Not the new one. For more detail - Documentation