即使在启动新 activity 并清除返回堆栈后,仍保留根 activity

Keep the root activity even after starting new activity and clearing the back stack

我将开始以下系列活动:

A->B->C->D 现在我想启动另一个 activity 假设 E 来自 D 并清除堆栈但保留 activity A 作为根 activity。 在启动 E 之后,堆栈应该是 A->E。我怎样才能做到这一点?

当你开始时 activity E 从 D 首先清除标志顶部或 finishAffinity()。所以你之前的所有 activity 都关闭了。并首先从 backpress 打开 activity。

在E中添加OnBackPressed方法Activity。

喜欢这个

   @Override
    public void onBackPressed() {
        super.onBackPressed();
        Intent intent = new Intent(getApplicationContext(), AActivity.class);
        startActivity(intent);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
            finishAffinity();
        } else {
            finish();
        }
    }

您可以通过 TaskStackBuilder 实现。这个家伙可以让你重建你需要的堆栈。你需要这样的东西:

final Intent activityAIntent = new Intent(this, ActivityA.class);
activityAIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);

TaskStackBuilder.create(this)
                .addNextIntent(activityAIntent)
                .addNextIntent(new Intent(this, ActivityE.class))
                .startActivities();