外观
请解释 Android 中四种启动模式(standard, singleTop, singleTask, singleInstance)的区别和适用场景?
标准回答
standard 每次通常新建;singleTop 只在目标已位于目标任务栈顶时复用;singleTask 找到可复用实例时清掉其上方 Activity;singleInstance 的实例独占一个任务。复用实例时,新请求交给 onNewIntent。
**各自的适用场景:**普通可重复详情页常用 standard;避免顶部通知页重复打开可考虑 singleTop;明确需要回到已有入口并清上层时可考虑 singleTask;singleInstance 适合确有任务隔离需求的入口,普通业务页慎用。
**版本与任务条件:**Android 12 起还有 singleInstancePerTask:目标作为任务根,但同任务可以有其他 Activity,在相应启动条件下可在多个任务中创建。实际行为需同时看 flags、taskAffinity 和启动来源。
通俗例子
A、B、C 已依次打开:standard 再开 B 通常新建;singleTop 只有 B 已在栈顶才复用;singleTask 复用已有 B 时会清掉它上面的 C。
深入解释
**用栈顶判断复用:**standard 通常新建;singleTop 只在目标已是栈顶时复用。例如 A→B→C 再开 B,singleTop 通常仍创建新 B,因为当前栈顶是 C。
**还有哪些条件:**singleTask 复用目标时通常移除其上方 Activity。singleInstance 与较新的 singleInstancePerTask 还有任务归属规则;最终行为同时受 Intent flags、任务亲和性和系统版本影响。
易混淆点
“只有四种”是旧口径。实际结果还要结合 Intent flags、taskAffinity 和启动来源。
参考资料
内容来源
- Android · AI Agent 知识手册 · 原条目
1.3.1