清除活动堆栈无效

时间:2012-03-30 09:07:38

标签: android

我的活动有以下设置:

A(noHistory) - > B - > C - > D - > ë

因此,当我从activity E启动activity D时,我希望E成为根活动并清除其余的后备堆栈。

我遵循了许多帖子中提到的解决方案,即将以下标志添加到我的意图中:

final Intent explicitIntent = new Intent(this,
                E.class);
        explicitIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
        explicitIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        this.startActivity(explicitIntent);

但是,Activity E(以前没有运行)不会成为后台堆栈的根。相反,只有Activity D从后堆栈中删除,如果按下后退按钮,CB仍然存在。

所以我想在SDK中实现真正不可能的< 11如下所述:Clear the entire history stack and start a new activity on Android

3 个答案:

答案 0 :(得分:1)

开始这样的活动..

活动B

 int k=1;
        Intent i=new Intent(B.this,C.class);
        startActivityForResult(i,k);

活动C

int j=1;
        Intent i=new Intent(C.this,D.class);
        startActivity(i,j);

活动D

 int j=1;
        Intent i=new Intent(D.this,E.class);
         startActivityForResult(i,j);
         setResult(RESULT_OK, null);
        finish();

并将其放入活动C

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   if (requestCode ==1) {
      if (resultCode == RESULT_OK) {

        setResult(RESULT_OK, null);
     finish();

      }
   }

活动B

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   if (requestCode ==1) {
      if (resultCode == RESULT_OK) {

        setResult(RESULT_OK, null);
     finish();

      }
   }

答案 1 :(得分:0)

在您的代码中,只需替换以下行:

explicitIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
explicitIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

这些行:

explicitIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

试试这段代码。

答案 2 :(得分:0)

最后我就像Rasel建议的那样(在我的问题的评论中) 当进入活动E时,我在活动B,C,D上调用完成以使它们离开堆栈。