我在android的后台堆栈上遇到了一个小问题。
我有以下活动堆栈:
Root -> ActivityA -> Detail
Root活动的launchMode设置为singleTask
,其他是标准的。
当使用导航抽屉切换到另一个活动时,我会调用当前活动的完成(如果它不是root)并启动所选活动。只要我只有一个级别的活动,这就有效。 但是,当从Detail活动中使用抽屉时,后堆栈仍然包含ActivityA(到目前为止,因为只有详细活动已完成)。
Root -> ActivityA -> ActivityB
我总是希望在使用抽屉后获得根和所选活动
Root -> ActivityX
我已经尝试在从导航抽屉启动新任务时添加标记FLAG_ACTIVITY_NEW_TASK
和FLAG_ACTIVITY_CLEAR_TASK
,但这会导致Root活动也完成,并在ActivityB中按回将关闭整个应用而不是回到根。
编辑: 我想要的一个很好的例子是gmail应用程序:选择一个标签(我的ActivtyA)并从中打开一个邮件(我的详细信息)。然后使用抽屉转到另一个标签(我的ActivityB)。按后退键将其带回默认收件箱(我的根目录)。