销毁所有以前的活动后,具体活动是开放

问题描述:

这是该方案销毁所有以前的活动后,具体活动是开放

Activity A - >Activity B - >Activity C - >Activity D(我想破坏活动A,B和C Activity D启动后

任何想法请

+0

Intent i = new Intent(FirstActivity.this,NextActivity.class); startActivity(i); //使用意向完成 FirstActivity.this.finish(); – impathuri

Intent intent = new Intent(ActivityC.this, ActivityD.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
startActivity(intent); 
ActivityC.this.finish(); 

FLAG_ACTIVITY_NEW_TASK

如果设置,这个活动将成为一个新任务的开始在这个 历史堆栈上。任务(从开始它到下一个 任务活动的活动)定义用户可以移动到的活动的原子组。任务可以移动到前台和后台;所有 特定任务内部的活动始终保持相同的 顺序。有关任务的更多信息,请参阅任务和返回堆栈。

这个标志是普遍使用的是要呈现 “发射”式的行为活动:它们给用户的单独 事情是可以做的,否则运行完全独立 活动推出它们的列表。

使用此标志时,如果任务已在运行 您现在正在启动,则不会启动新的活动; 取而代之的是,当前任务将被简单地置于 屏幕的前端并显示其状态。请参阅FLAG_ACTIVITY_MULTIPLE_TASK 以获取禁用此行为的标志。

当调用者请求从 开始的活动的结果时,不能使用此标志。

FLAG_ACTIVITY_CLEAR_TASK

如果传递给Context.startActivity()的意图设置,这个标志将 导致将与该活动相关联,以 活动前被清除任何现有任务开始。也就是说,活动 成为其他空任务的新根,并且任何旧的活动都已完成。这只能与 FLAG_ACTIVITY_NEW_TASK结合使用。

你需要传递标志Intent.FLAG_ACTIVITY_CLEAR_TOPIntent

Intent intent = new Intent(getApplicationContext(), D.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 
+0

当我已经在活动C我调用了代码'Intent intent = new Intent(getApplicationContext(),D.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent);'但是当我点击后退按钮。我仍然回到'活动C'。谢谢你的回答,虽然 – JayVDiyk

+0

是的你可以去活动C,但你的活动A,B将完成 – Pitty

+0

使用:Activity_C activity = new Activity_C(); activity.finish();在你的Activity D OnCreate()方法中 – Pitty

使用这些线路以清除活动堆栈当活动C被推出:

Intent i = new Intent(PresentActivityName.this, D.class); 
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
    startActivity(i); 
    finish();