如何在启动属于另一个堆栈的另一个 activity 时清除当前 activity 堆栈

How to clear current activity stack when start another activity which belong to another stack

对于example:A启动B,B启动C,A和C属于'Hello'-stack,B属于'World'-stack,当用户在[中按下后退按钮时=22=] C,就会return到A。 Note1:B 意味着很多活动,而不只是一个 activity, 比如A开始B1,B1开始B2,B2开始B3....,Bn开始C。 Note2:I 需要 B 保留在堆栈中,直到 C 启动,当用户按下 回到 B3,它应该 return 到 b2。

其实我已经通过startActivityForResult实现了这个需求,我只是想知道有没有办法用stack来实现这个。

当您从 B 开始 Activity C 时,只需调用 finish()。 然后重写activity C中的onBackPressed()。并添加代码启动Activity A.

从activity A到activity B时,如下:

 Intent i=new Intent(ActivityA.this,ActivityB.class);
 startActivity(i);

如果您想从 B 打开 C 但又不想 B 在堆栈中,请执行以下操作:

 Intent i=new Intent(ActivityB.this,ActivityC.class);
 startActivity(i);
 ActivityB.this.finish();

所以当在 C 上被反压时,你会自动得到 A 而不是 B。

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 要么 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 适合我。