当Intent Flag与Manifest启动模式冲突时,哪一方配置会被优先采用?
关于Intent Flag与Manifest启动模式冲突的处理规则
当Intent Flag和Manifest中Activity的启动模式配置冲突时,Intent Flag的优先级更高。
针对你描述的场景:Activity B在Manifest中设置启动模式为singleTop,但启动时通过Intent指定了FLAG_ACTIVITY_NEW_TASK标记,此时系统会按以下逻辑处理:
- 若当前系统中不存在Activity B的实例,系统会为B创建一个新的任务栈,并将B的实例放入该栈中。
- 若当前已有包含Activity B实例的任务栈:
- 若B正好处于该任务栈的栈顶,不会创建新实例,而是调用B的
onNewIntent()方法接收新的Intent。 - 若B不在该任务栈的栈顶,则会在对应任务栈中创建B的新实例(
singleTop仅限制栈顶重复创建,而FLAG_ACTIVITY_NEW_TASK仅在无对应任务栈时才创建新栈)。
- 若B正好处于该任务栈的栈顶,不会创建新实例,而是调用B的
本质原因是:Manifest的启动模式是静态全局配置,而Intent Flag是启动时的动态场景化配置,系统设计上优先遵循动态配置以支持灵活的启动逻辑。
内容的提问来源于stack exchange,提问作者Akshat Singhal
相关产品推荐
相关产品推荐

