这就是场景
Activity A
- > Activity B
- > Activity C
- > Activity D
(我想在Activity D
启动 后销毁活动A,B和C.
有什么想法吗?
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()的Intent中设置,则此标志将导致在活动开始之前清除与活动关联的任何现有任务.也就是说,活动成为否则为空任务的新根,并且任何旧活动都已完成.这只能与FLAG_ACTIVITY_NEW_TASK一起使用.