Скажімо, у вас є стек активності, такий як A> B> C> D> E. Ви перебуваєте в діяльності D, і ви хочете закрити програму. Це те, що ти будеш робити -
В Діяльність, звідки Ви бажаєте закрити (Діяльність 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);
У вашій RootActivity (тобто вашій базовій діяльності, тут Діяльність 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, оскільки якщо активність активна, вона отримає перший намір, який її розпочав. Не новий. Детальніше - Документація