管理android的backstack

时间:2015-11-23 20:07:39

标签: android android-intent android-activity

我有一个活动层次结构,我有一个按钮,允许我从活动D转到活动B.

image

问题是从D转到B会将C留在后台上,所以如果我做A-> C-> D-> B然后按回来它会将我发送给C,而不是A(这就是我想要的)。

当我点击B中的按钮时,有没有办法删除C,还是有某种解决方法?

1 个答案:

答案 0 :(得分:1)

考虑使用A作为调度程序。当您想要从B启动D并在此过程中完成C时,请在D中执行此操作:

// Launch A (our dispatcher)
Intent intent = new Intent(this, A.class);
// Setting CLEAR_TOP ensures that all other activities on top of A will be finished
//  and setting SINGLE_TOP ensures that a new instance of A will not
//  be created (the existing instance will be reused and onNewIntent() will be called)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
// Add an extra telling A that it should launch B
intent.putExtra("startB", true);
startActivity(intent);
A.onNewIntent()中的

执行此操作:

@Override
protected void onNewIntent(Intent intent) {
    if (intent.hasExtra("startB")) {
        // Need to start B from here
        startActivity(new Intent(this, B.class));
    }
}