我有一个包含3个活动的堆栈:A, B, C
。从Activity C
开始,我在Intent上开始Activity B
设置标志:FLAG_ACTIVITY_NEW_TASK
。根据文档,这应该使Activity B
在底层带有基础任务,从而产生堆栈:A, B, C, A, B
。
但实际堆栈为A, B, C, B
。当我按下Activity B
的后退按钮时,我按相反的顺序浏览上面的堆栈:B -> C -> B -> A
。
从Activity B
开始Activity C
的代码是:
Intent intent = new Intent(this, B.class);
intent.setFlag(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
根据文档,标记FLAG_ACTIVITY_NEW_TASK
导致与"singleTask"
launchMode值相同的行为。如果我在AndroidManifest.xml
文件中设置"singletask"
上的启动模式Activity B
,那么它会按照文档中的说明生成预期的行为:任务A, B
出现在前面在堆栈A, B, C, A, B
中。
为什么它不适用于标志FLAG_ACTIVITY_NEW_TASK
?在这种情况下,是否还需要一些affinity
配置?