1

`

public void SignOut(View view) {
        Intent intent = new Intent(getApplicationContext(), MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
        finish();
    }

`我有一个安卓应用程序。活动就像 -> A->B->C->D->E。活动 A 有登录页面。所以在移动到下一个活动,即 B,我没有完成活动 A。堆栈增长如下:A,B,C,D 然后活动 D 完成并开始 E。在活动 E 中,我有一个退出按钮。到目前为止,我的堆栈是:A,B,C,E。按注销时,弹出 E。此时我想清除活动堆栈并开始我的第一个活动,即要求登录的 A。我无法做到这一点。退出后,我的堆栈变为 A、B、C、A。我希望堆栈只有 A。请帮忙。提前致谢。

4

1 回答 1

1

我已经解决了这个问题。

除了上面提到的代码,在我的主要活动类中,在 onRestart() 函数中,我添加了代码:

getIntent().setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

这确保了无论何时调用此活动,例如在我的情况下,它都是从最后一个活动中调用的。此时,它要么处于onPaused()状态,要么处于onStop()状态,如果下一个活动完全覆盖它,它将再次重新启动。此时,清除活动 A 的后堆栈(即 A 顶部的所有活动),如果堆栈上有任何内容以重新开始。

于 2018-07-01T12:18:56.177 回答