You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用FLAG_ACTIVITY_SINGLE_TOP|FLAG_ACTIVITY_NEW_TASK的栈行为疑问

Android Activity栈行为解析:FLAG_ACTIVITY_SINGLE_TOP + FLAG_ACTIVITY_NEW_TASK 场景

先明确两个标记的核心作用:

  • FLAG_ACTIVITY_SINGLE_TOP:若目标Activity已在当前栈顶,则复用现有实例;若不在栈顶,需结合其他标记判断是否创建新实例。
  • FLAG_ACTIVITY_NEW_TASK:仅当目标Activity的taskAffinity与当前栈的taskAffinity不同时,才会为其创建新任务栈;默认情况下所有Activity的taskAffinity均为应用包名,此时该标记不会创建新栈,而是将目标Activity移至栈顶,并清除其上方的所有Activity。

回到你的场景:当前Activity栈为 A → B → C,从C启动A并使用FLAG_ACTIVITY_SINGLE_TOP | FLAG_ACTIVITY_NEW_TASK标记:

  1. 默认taskAffinity一致,不会创建新栈。
  2. 系统会将A上方的B、C从栈中移除,把A调到栈顶,最终栈结构变为 [A]。
  3. 此时在A界面按返回键会直接退出应用,因为栈中只有A这一个Activity;而不是从C返回——因为C已经被出栈了。

总结:不会创建新栈,原有栈的B、C会被清除,最终栈仅保留A,按返回键直接退出应用。

内容的提问来源于stack exchange,提问作者Gil Ong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 16:52:01