Просто используйте FLAG_ACTIVITY_CLEAR_TOP
Когда пользователь нажимает кнопку:
Intent intent = new Intent(ActivityD.this, ActivityB.class);
Intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
Когда пользователь нажимает назад:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Intent intent = new Intent(ActivityD.this, ActivityA.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
}
return super.onKeyDown(keyCode, event);
}
Этот код приведет пользователя к первому действию. Это действие не будет воссоздано из-за FLAG_ACTIVITY_SINGLE_TOP
. Когда активность уже находится в обратном стеке, вызывается onNewIntent (), в котором вы можете использовать данные из намерения, например.
Если вы хотите, чтобы в вашей деятельности по умолчанию использовалось такое поведение, поместите эти флаги в декларацию активности Android.