从堆栈中删除活动,在Top上创建新实例

时间:2013-12-11 19:08:10

标签: android android-activity

我的活动流程是这样的

A - > B - > C - >乙

当我从C启动B时,后面的堆栈应该重新排序为:

A - > C - >乙

我正在使用FLAG_ACTIVITY_REORDER_TO_FRONT但是从堆栈中重新使用实例,我不需要以前的状态(我需要再次调用onCreate。)

更新:为什么我需要它(用例)

用户从A导航 - > B(在此更改内容) - > ç

在C上打开抽屉导航并启动B. B应该以初始状态启动。

1 个答案:

答案 0 :(得分:0)

使用FLAG_ACTIVITY_REORDER_TO_FRONT并向Intent添加额外内容,如下所示:

Intent intent = new Intent(this, ActivityB.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.putExtra("reinitialize", true);
startActivity(intent);

然后,在ActivityB中执行此操作以在活动被带到前面时重新创建活动:

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    if (intent.hasExtra("reinitialize")) {
        // We need to recreate this activity
        Intent launchIntent = new Intent(this, this.getClass());
        startActivity(launchIntent);
        finish();
    }
}